一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
图22、进入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举报/反馈