Nginx正向代理

  • Nginx正向代理80端口
  • Nginx代理服务器端配置:
  • 客户端配置:
  • Nginx正向代理非80端口
  • Nginx代理服务器端配置
  • 客户端配置:


正向代理需求环境:

局域网无法访问互联网,但是内网中有一个服务器能上互联网,即可配置正向代理,使客户端能通过代理服务器访问互联网中的网站。

正向代理原理图:

PC——nginx服务器——互联网——互联网中网站

nginx ip 保留公网IP nginx 内网ip_html

Nginx正向代理80端口

本文正向代理的是80端口,所以客户端PC智能访问互联网中80端口http开头的网站。
代理端口可改变,同理客户端PC智能访问互联网中对应端口的网站。

Nginx代理服务器端配置:

nginx服务器能上互联网。
本例中nginx服务器网卡配置:
ip地址:192.168.3.157
子网掩码:255.255.255.0
网关:192.168.3.1
nginx.conf 中配置

resolver 114.114.114.114;

    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://$http_host$request_uri;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    }

此配置,仅支持客户端访问代理80端口的网站,如下图:

nginx ip 保留公网IP nginx 内网ip_nginx ip 保留公网IP_02

客户端配置:

客户端不能上互联网,但能连接nginx代理服务器,即可ping通nginx服务器。

客户端网卡配置:

ip地址:192.168.3.178

子网掩码:255.255.255.0

网关:192.168.3.157

配置浏览器代理设置:

Iinternet选项——连接——局域网设置:

配置nginx代理服务器的IP地址

nginx ip 保留公网IP nginx 内网ip_html_03


客户端上:在浏览器输入 对应的http网站(80端口)

注: 无法访问https网站。

nginx ip 保留公网IP nginx 内网ip_局域网_04

Nginx正向代理非80端口

由于nginx要代理非80端口,需由80端口进行转换,所以需要在代理80端口正确的基础上,新增需要正向代理的非80端口。
本文以8000端口为例,无法上网的客户端访问互联网中8000端口的网站。

Nginx代理服务器端配置

resolver 114.114.114.114;
	
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
			proxy_pass http://$http_host$request_uri;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

	server {
        listen       8000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
			proxy_pass http://$http_host:8000/$request_uri;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

在正向80端口的基础上,新增一个server类,注意的是下图中标注的8000端口。

如果是访问互联网中其他端口网站,将8000改成其他的端口即可。

nginx ip 保留公网IP nginx 内网ip_html_05

客户端配置:

配置浏览器代理设置:

Iinternet选项——连接——局域网设置:

配置nginx代理服务器的IP地址和端口,非80端口的代理设置端口仍然配置为80(因需80端口进行转发)

nginx ip 保留公网IP nginx 内网ip_html_06


在浏览器中访问80端口的网站和非80端口的网站仍然成功。测试结果如下:

nginx ip 保留公网IP nginx 内网ip_局域网_07