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

 更新时间:2024年01月25日 14:40:11   作者: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分为两种类型:

  • 不带URI方式:只包含IP和端口号的,不带uri(单个/也算uri),比如proxy_pass http://localhost:8080
  • 带URI方式:在端口号之后有其他路径的,包含了只有单个/的如proxy_pass http://localhost:8080/,以及其他路径,比如proxy_pass http://localhost:8080/abc

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

详细解析:

  • 请求的uri:/proxy/index.html
  • location匹配的部分:/proxy
  • proxy_pass 指定的uri:/svr1
  • 最终的uri:/svr1/index.html (将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri)
  • 代理地址:http://127.0.0.1:8099
  • 最终访问的url:http://127.0.0.1:8099/svr1/index.html
  • 即访问 http://localhost:8088/proxy/index.html,
  • 实际请求路径为 http://127.0.0.1:8099/svr1/index.html 

URL末尾不存在 uri

处理逻辑:

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

如:

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

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

详细解析:  

  • 请求的uri:/proxy2/index.html
  • 代理地址:http://127.0.0.1:8099
  • 最终访问的url:http://127.0.0.1:8099/proxy2/index.html
  • 即访问 http://localhost:8088/proxy2/index.html,
  • 实际请求路径为 http://127.0.0.1:8099/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,请注意这里的双斜杠。
}

总结

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

相关文章

  • 在Nginx中隐藏版本号的方法详解

    在Nginx中隐藏版本号的方法详解

    Nginx是一款高性能的Web服务器软件,它支持反向代理、负载均衡、缓存等功能,在使用 Nginx 的过程中,有时候我们需要隐藏 Nginx 的版本号,以增强服务器的安全性,所以接下来小编将给大家介绍如何在Nginx中隐藏版本号,需要的朋友可以参考下
    2023-11-11
  • nginx配置将HTTPS请求转换成HTTP的方法实现

    nginx配置将HTTPS请求转换成HTTP的方法实现

    Nginx是一个很流行、很强大的代理软件,我们可以借助Nginx,设置 http强转https,本文就来详细的介绍一下,感兴趣的可以了解一下
    2023-09-09
  • nginx配置location方法总结

    nginx配置location方法总结

    这篇文章主要介绍了nginx配置location方法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Nginx 499错误问题及解决办法

    Nginx 499错误问题及解决办法

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,接下来通过本文给大家介绍Nginx 499错误问题及解决办法,一起看看吧
    2016-06-06
  • 详解Nginx 利用代理转发请求示例

    详解Nginx 利用代理转发请求示例

    这篇文章主要介绍了详解Nginx 利用代理转发请求示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nginx进程调度问题详解

    Nginx进程调度问题详解

    Nginx采用的是固定数量的多进程模型,由一个主进程(MasterProcess)和数量与主机CPU核数相同的工作进程协同处理各种事件。这篇文章主要介绍了Nginx进程调度问题,需要的朋友可以参考下
    2021-09-09
  • 使用Nginx Ingress 优雅显示错误页面

    使用Nginx Ingress 优雅显示错误页面

    这篇文章主要为大家介绍了使用Nginx Ingress 优雅显示错误页面实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Nginx的gzip指令使用小结

    Nginx的gzip指令使用小结

    GZIP就是将文件压缩传输,图片、视频、大文件不建议使用压缩,压缩需要占用你的服务器资源,压缩完效果也不大,今天通过本文给大家如何用好Nginx的gzip指令,感兴趣的朋友一起看看吧
    2022-05-05
  • Nginx IP封禁及自动封禁IP的实现

    Nginx IP封禁及自动封禁IP的实现

    本文主要介绍了Nginx IP封禁及自动封禁IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 通过Nginx定义Header头信息的实现步骤

    通过Nginx定义Header头信息的实现步骤

    本文主要介绍了通过Nginx定义Header头信息的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论