Nginx反向代理配置

Nginx反向代理配置

Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。

反向代理可以隐藏服务器信息,保证内网的安全,通常将反向代理作为公网访问地址,web 服务器是内网,即通过 nginx 配置外网访问 web 服务器内网。

反向代理配置指令

proxy_redirect

指令

proxy_redirect off;

说明

重写后端服务器的 location 和 refresh 头。

proxy_set_header

指令

proxy_set_header Host $host;

说明

重写发送给后端服务器的请求头内容。

proxy_connect_timeout

指令

proxy_connect_timeout 300;

说明

代理服务器接收请求到连接后端服务器的最长等待时间。

proxy_buffer_size

语法

proxy_buffer_size 4k;

说明

后端响应的缓冲区数量和大小。

proxy_buffers

语法

proxy_buffers 4 32k;

说明

请求后端的缓冲区数量和大小。

proxy_busy_buffers_size

语法

proxy_busy_buffers_size 64k;

说明

当代理服务器忙时,缓冲区的最大值。

proxy_send_timeout

语法

proxy_send_timeout 300

说明

将超时与请求传输到代理服务器分配。

proxy_read_timeout

语法

proxy_read_timeout 300

说明

NGINX 等待获取请求响应的时间。

Nginx反向代理案例

简单配置

server { listen 80; server_name m.haicoder.net;# 服务器地址或绑定域名 location / { # 访问80端口后的所有路径都转发到 proxy_pass 配置的ip中 proxy_pass http://192.168.98.80:8081; # 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】 root html; index index.html index.htm; }}

当访问到该 m.haicoder.net 时,直接转发到 http://192.168.98.80:8081

完整配置

location / { proxy_pass http://apachephp; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }

案例

我们首先,使用 Linux 的 cp 命令,将 nginx 的配置文件 nginx.conf 拷贝一份,拷贝为 nginx.8081.conf,具体命令如下:

cp /etc/nginx/nginx.conf /etc/nginx/nginx.8081.conf

拷贝完成,如下图所示:

65_nginx反向代理配置.png

我们再次,将 default.conf 拷贝一份,具体命令如下:

cp -rf /etc/nginx/conf.d/ /etc/nginx/conf.8081.d

拷贝完成后,如下图所示:

66_nginx反向代理配置.png

现在,我们使用 vim 修改 /etc/nginx/nginx.8081.conf 配置,修改为如下:

include /etc/nginx/conf.8081.d/*.conf;

修改 include 指令,修改完毕后,如下图所示:

67_nginx反向代理配置.png

现在,我们再次打开 8081 下的配置,命令如下:

vim /etc/nginx/conf.8081.d/default.conf

我们修改监听的端口为 8081,修改完毕后,配置如下:

68_nginx反向代理配置.png

同时,我们在 /usr/share/nginx8081/html 路径下新建一个 index.html,现在,我们再次打开默认的 default.conf 配置,具体命令如下:

vim /etc/nginx/conf.d/default.conf

修改如下:

69_nginx反向代理配置.png

现在,我们启动 8081 的 nginx,具体命令如下:

nginx -c /etc/nginx/nginx.8081.conf

我们再次,启动 80 的 nginx,具体命令如下:

nginx

现在,我们使用浏览器访问,此时页面如下:

70_nginx反向代理配置.png

我们看到,此时,我们访问的是 80 端口,但因为我们在 80 端口里面配置了反向代理转发到 8081 端口,即,我们成功配置了反向代理。

Nginx反向代理配置总结

Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。

反向代理可以隐藏服务器信息,保证内网的安全,通常将反向代理作为公网访问地址,web 服务器是内网,即通过 nginx 配置外网访问 web 服务器内网。