nginx反向代理实践

一nginx反向代理原理

反向代理对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

图1

二 nginx实践

最近蒲公英VPN升级,限制VPN用户个数,免费版的只允许两个VPN用户登录,要更多的人能使用VPN则必须购买,按人头购买。因此我们想到了用代理的模式能让更多的用户使用。用户Z登录蒲公英VPN,用户Z的环境里搭建一个代理环境,作为代理服务器Z,其他用户A则通过代理服务器Z来访问原始资源服务器B。nginx使用反向代理配置,用户A通过代理服务器Z来访问原始资源服务器B,对用户A的用户体验是没有影响的,用户A不需要配置额外的配置就可以使用了。

需求:需要访问原始资源服务器B的各种资源,包括网站,git服务,linux服务器,数据库等。

1、下载nginx windows版本 本人下载了最新的稳定版1.18.0

图2

2、进入conf文件夹,修改nginx.conf配置文件

以下的配置允许了数据库的访问,linux服务器的访问,采用stream流的形式。

stream{

server{# 广州数据库

listen 85;

# 配置数据库的ip和端口

proxy_pass 广州数据库ip:3306;}

server{# 北京数据库

listen 86;

proxy_pass 北京数据库Ip:3306;}

server{# 广州40oracle数据库

listen 87;

proxy_pass 广州oracle ip:1521;}

#配置广州某ip xshell

upstream ssh {

server广州ip1:22;}

upstream ssh40 {

server广州ip2:22;}

server {#监听ssh

listen 22;

proxy_pass ssh;

proxy_connect_timeout 1h;

proxy_timeout 1h;}

server {#监听ssh40

listen 23;

proxy_pass ssh40;

proxy_connect_timeout 1m;

proxy_timeout 1m;}

}

以下http形式的配置允许各个网站的访问。

http {

include mime.types;

default_typeapplication/octet-stream;

keepalive_timeout65;

charset uft-8;

#add_header Access-Control-Allow-Headers Authorization;

underscores_in_headers on;

server {#禅道:地址是: ip1:8090/

listen 8090;

server_namelocalhost;

#编码格式

charset utf-8;

location / {

proxy_passip1:8090;

proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

proxy_set_header Authorization $http_authorization;}

error_page 500 502 503 504/50x.html;

location = /50x.html {

root html;

} }

server {#广州自动化测试网址

listen 8066;

server_namelocalhost;#

location / {#

proxy_pass 广州自动化测试网址ip:8866;

proxy_set_header X-Real-IP $remote_addr;###

proxy_set_header Host $http_host;##

proxy_set_header Authorization $http_authorization;}##

location = /50x.html {#

root html;} }

server {#北京自动化测试网址

listen 8067;

server_namelocalhost;##

location / {##

proxy_pass 北京自动化测试网址ip:8511;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#

proxy_set_header X-Real-IP $remote_addr;#

proxy_set_header Host $http_host;#

proxy_set_header Authorization $http_authorization;}#

location = /50x.html {#####

root html; } }}

3、根据需要将代理的环境配置好后,启动nginx,执行start nginx 如果有修改配置,直接执行nginx -s reload重新加载配置

4、验证

其他用户访问远程资源可以访问到即成功,访问用户Z的IP:端口.

图3图4图5图6

由于nginx配置里我们配置了多个网址,由于我们是内网地址,Ip随机分配,ip有可能会变化。所以为了方便访问,避免因为Ip变化导致其他用户要修改网址,可以在C:\Windows\System32\drivers\etc\hosts加个配置

127.0.0.1 test.com

这样就可以用test.com代替ip,其他用户在他们的hosts里配置

用户ZIP test.com 就可以访问。

图7举报/反馈