首页 新闻 会员 周边 捐助

请教一个 nginx重写问题

0
悬赏园豆:5 [已解决问题] 解决于 2024-07-21 16:51

我用docker安装了一个Portainer,端口是 9000,访问地址,192.168.1.201:9000

我现在想利用 Nginx 进行重写,当访问 http://192.168.1.201/Portainer 时,实际访问的是 192.168.1.201:9000。

 

我自己加的重写配置,但是却直接进入了 错误页,我不知道是什么问题,请问这个我应该怎么配置呢

 

 

暖暖De幸福的主页 暖暖De幸福 | 初学一级 | 园豆:8
提问于:2024-05-21 15:19
< >
分享
最佳答案
1
收获园豆:5
天山一朵花 | 菜鸟二级 |园豆:209 | 2024-07-18 17:08

我照着上面的修改了配置,可以错误从原来的 502 变成了 404.

127.0.0.1:9000 本身是可以访问的

location /Portainer {
  rewrite /Portainer / break;
  proxy_pass http://127.0.0.1:9000;
}
暖暖De幸福 | 园豆:8 (初学一级) | 2024-07-21 15:12

照着老师的又修改了一下,已经可以了,感谢

暖暖De幸福 | 园豆:8 (初学一级) | 2024-07-21 16:51
其他回答(1)
1

要配置Nginx以将http://192.168.1.201/Portainer的请求代理到192.168.1.201:9000,你需要使用Nginx的location块和proxy_pass指令,而不是rewrite指令(除非你需要更复杂的URL重写逻辑,但在这个例子中你不需要)。

下面是一个基本的Nginx配置示例,它将http://192.168.1.201/Portainer的请求代理到192.168.1.201:9000

server {
    listen 80;
    server_name 192.168.1.201;

    location /Portainer/ {
        # 去掉URI中的/Portainer部分,这样Portainer应用就能正确处理剩余的URI
        proxy_pass http://192.168.1.201:9000/;

        # 设置请求头,这样Portainer可以识别代理过来的请求
        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 X-Forwarded-Proto $scheme;

        # 如果你希望保持原始的请求URI(包括/Portainer部分),则不需要下面的指令
        # 但这通常不是Portainer所期望的,因为它可能期望根路径作为URI的开始
        # proxy_set_header X-Original-URI $request_uri;

        # 其他可能的配置,比如设置超时时间等
        # ...
    }

    # 可能还有其他location块用于处理其他请求
    # ...
}

注意几个关键点:

  • proxy_pass后面的URL末尾的斜杠(/)很重要,因为它告诉Nginx在转发请求时去除location块中指定的URI部分(即/Portainer/)。这样Portainer应用就能像接收直接请求那样接收转发过去的请求。
  • proxy_set_header指令用于设置传递给后端服务器的请求头。这通常包括HostX-Real-IPX-Forwarded-ForX-Forwarded-Proto,以帮助后端服务器识别请求的来源和协议。
  • 如果你不希望修改请求的URI(即保持/Portainer/),你可以去掉proxy_pass后面的斜杠,但请确保Portainer应用能够正确处理这种URI格式。

将上述配置添加到你的Nginx配置文件中,并重新加载或重启Nginx服务以使更改生效。然后,你应该能够通过http://192.168.1.201/Portainer访问Portainer应用,而实际请求会被Nginx代理到192.168.1.201:9000

破烂世界毁灭吧操 | 园豆:140 (初学一级) | 2024-05-22 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册