站点配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#PROXY-START/
location ^~ /map/
{
rewrite ^/map/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8100;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# proxy_hide_header Upgrade;
}
#PROXY-END/

具体剖析:

  • location ^~ /map/:这是一个Nginx location 指令,用于匹配以/map/开头的请求路径。

  • rewrite ^/map/(.*)$ /$1 break;:将请求URL中的/map/前缀去除,并使用 rewrite 指令进行重写。以便能以正确路径正确访问到源站点的资源。

  • proxy_pass http://127.0.0.1:8100;:将匹配的请求代理转发到http://127.0.0.1:8100服务器。

  • proxy_set_header:一系列指令,用于设置HTTP请求头信息,包括:

    • Host $host;:传递客户端请求的Host头信息。
    • X-Real-IP $remote_addr;:传递客户端真实IP地址。
    • X-Forwarded-For $proxy_add_x_forwarded_for;:将客户端原始IP地址添加到X-Forwarded-For头信息中。
    • REMOTE-HOST $remote_addr;:传递客户端IP地址。
    • Upgrade $http_upgrade;:传递Upgrade头信息,通常用于WebSocket等协议升级。
    • Connection $connection_upgrade;:传递Connection头信息,通常用于WebSocket等协议升级。
  • # proxy_hide_header Upgrade;:这行注释掉的指令是可选的,用于隐藏特定的响应头信息(Upgrade头信息)。

该配置文件实现反向代理以/map/开头的请求到http://127.0.0.1:8100服务器,并在代理过程中传递必要的HTTP头信息,以确保目标服务器正确处理这些请求。

实际上该案例所使用的服务只设置proxy_passrewrite即可正确实现访问,其他的HTTP头信息可以根据实际情况进行调整。