Nginx 不仅可以做反向代理,还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理(也就是大家常说的,通过正向代理进行上网功能)。
由于 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
此时,如下图所示:
我们修改配置如下:
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; }
修改完成后,如下图所示:
以上配置的注意事项:
- 不能有 hostname
- 必须有 resolver, 即 dns,即上面的 x.x.x.x,换成当前机器的 DNS 服务器 ip 即可(查看 dns 方法 cat /etc/resolv.conf 代理使用)
- $http_host 和 $request_uri 是 nginx 系统变量,保持原样即可。
检测配置文件无误后,在浏览器中添加代理服务器的 IP 地址,就可以使用该 Nginx 正向代理了。
Nginx正向代理配置总结
Nginx 不仅可以做反向代理,还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理(也就是大家常说的,通过正向代理进行上网功能)。