小能豆

nginx重写问题

javascript

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

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

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

966334576.png

797769483.png


阅读 45

收藏
2024-05-31

共1个答案

小能豆

你可以尝试使用Nginx的反向代理功能来实现这个重写和转发的需求。下面是一个可能的Nginx配置示例:

server {
    listen 80;
    server_name 192.168.1.201;

    location /Portainer {
        rewrite ^/Portainer/(.*)$ /$1 break;
        proxy_pass http://192.168.1.201:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 其他配置...
}

解释一下这个配置:

  • listen 80;:指定Nginx监听的端口为80,即HTTP默认端口。
  • server_name 192.168.1.201;:指定Nginx监听的主机名。
  • location /Portainer { ... }:匹配访问地址中以/Portainer开头的URL。
  • rewrite ^/Portainer/(.*)$ /$1 break;:重写访问地址,将/Portainer去掉,仅保留后续路径部分。
  • proxy_pass http://192.168.1.201:9000;:将请求转发到Portainer的地址。
  • proxy_set_header:设置代理请求的头部信息,保留原始请求的信息。

确保你在Nginx的配置文件中正确设置了这个server块,并且重新加载了Nginx配置后,尝试访问http://192.168.1.201/Portainer应该会被代理到Portainer的地址上。如果还有问题,可以检查Nginx的日志以获取更多信息。

2024-05-31