Nginx正向代理配置

Nginx正向代理配置

Nginx 不仅可以做反向代理,还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理(也就是大家常说的,通过正向代理进行上网功能)。

Nginx正向代理功能

由于 nginx 正向代理的功能指令较少,只需要进行简单的配置即可:

server { resolver 114.114.114.114; #指定DNS服务器IP地址 listen 8080; location / { proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址 } }

以上的配置只能访问 80 端口的网站,而不能访问 https 443 端口的网站,现在的网站基本上都是 https 的。要解决既能访问 http 80 端口也能访问 https 443 端口的网站,需要置两个 SERVER 节点,一个处理 HTTP 转发,另一个处理 HTTPS 转发,而客户端都通过 HTTP 来访问代理,通过访问代理不同的端口,来区分 HTTP 和 HTTPS 请求。

server { resolver 114.114.114.114; #指定DNS服务器IP地址 listen 80; location / { proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址 proxy_set_header HOST $http_host; proxy_buffers 256 4k; proxy_max_temp_file_size 0k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; } } server { resolver 114.114.114.114; #指定DNS服务器IP地址 listen 443; location / { proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址 proxy_buffers 256 4k; proxy_max_temp_file_size 0k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; } }

正向代理配置指令

resolver

语法

resolver address ... [valid=time];

配置段

http, server, location

说明

配置 DNS 服务器 IP 地址。可以指定多个,以轮询方式请求。nginx 会缓存解析的结果。默认情况下,缓存时间是名字解析响应中的 TTL 字段的值,可以通过 valid 参数更改。

resolver_timeout

语法

resolver_timeout time;

默认值

resolver_timeout 30s;

配置段

http, server, location

说明

解析超时时间。

案例

我们首先,使用 vim 打开 Nginx 的默认配置文件,具体命令如下:

vim /etc/nginx/nginx.conf

此时,如下图所示:

71_nginx正向代理配置.png

我们修改配置如下:

server { listen 8080; server_name www.haicoder.net; index index.html index.htm index.php; root /home/wwwroot; location / { resolver 192.168.8.88; proxy_pass $scheme://$http_host$request_uri; proxy_buffers 256 4k; } access_log off; }

修改完成后,如下图所示:

72_nginx正向代理配置.png

以上配置的注意事项:

  1. 不能有 hostname
  2. 必须有 resolver, 即 dns,即上面的 x.x.x.x,换成当前机器的 DNS 服务器 ip 即可(查看 dns 方法 cat /etc/resolv.conf 代理使用)
  3. $http_host 和 $request_uri 是 nginx 系统变量,保持原样即可。

检测配置文件无误后,在浏览器中添加代理服务器的 IP 地址,就可以使用该 Nginx 正向代理了。

Nginx正向代理配置总结

Nginx 不仅可以做反向代理,还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理(也就是大家常说的,通过正向代理进行上网功能)。