nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx通过proxy_pass设置反向代理,隐藏端口号

nginx如何通过proxy_pass设置反向代理,隐藏端口号

作者:Homilier

这篇文章主要介绍了nginx如何通过proxy_pass设置反向代理,隐藏端口号方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

通过proxy_pass设置反向代理,隐藏端口号

nginx配置修改,通过 proxy_pass 设置反向代理,监听域名(IP)转发到指定端口。

server
    {
        listen 80;
        server_name www.xxx.com;
 
        server_name_in_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        
        location / {
            proxy_pass http://www.xxx.com:8978;
        }
    }

nginx proxy_pass的配置

Nginx的官网将proxy_pass分为两种类型:

URL末尾存在 uri 

处理逻辑:

代理请求时,会先将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri,再将最终的uri拼接到代理地址,才是最终访问的url

如:

location /proxy {
	proxy_pass http://127.0.0.1:8099/svr1;  # uri为'/svr1'
}

发送如下请求:http://localhost:8088/proxy/index.html

详细解析:

URL末尾不存在 uri

处理逻辑:

代理请求时,直接将请求的uri拼接到代理地址,就是最终访问的url

如:

location /proxy2 {
	proxy_pass http://127.0.0.1:8099;  # 无uri
}

发送如下请求:http://localhost:8088/proxy2/index.html  

详细解析:  

下面的几个例子加深理解

server {
   listen       80;
   server_name  localhost;
 
   location /api1/ {
           proxy_pass http://localhost:8080;
        }
   # http://localhost/api1/xxx -> http://localhost:8080/api1/xxx
 
 
   location /api2/ {
           proxy_pass http://localhost:8080/;
        }
   # http://localhost/api2/xxx -> http://localhost:8080/xxx
 
 
   location /api3 {
           proxy_pass http://localhost:8080;
        }
   # http://localhost/api3/xxx -> http://localhost:8080/api3/xxx
 
 
   location /api4 {
           proxy_pass http://localhost:8080/;
        }
   # http://localhost/api4/xxx -> http://localhost:8080//xxx,请注意这里的双斜线,好好分析一下。
 
 
   location /api5/ {
           proxy_pass http://localhost:8080/haha;
        }
   # http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,请注意这里的haha和xxx之间没有斜杠,分析一下原因。
 
   location /api6/ {
           proxy_pass http://localhost:8080/haha/;
        }
   # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx
 
   location /api7 {
           proxy_pass http://localhost:8080/haha;
        }
   # http://localhost/api7/xxx -> http://localhost:8080/haha/xxx
 
   location /api8 {
           proxy_pass http://localhost:8080/haha/;
        }
  # http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,请注意这里的双斜杠。
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文