Nginx 反向代理 + 从本地主机重写 URL

Nginx 反向代理 + 从本地主机重写 URL

我想在反向代理中重写 URL,因此在我的情况下,我想更改如下所示的 url,我运行了一些容器,因此它们现在可以调用,但是使用端口和本地主机,我添加了一个带有 nginx 反向代理的新容器,并且我想通过这个恢复我的 url,但我不知道应该如何在此路径 /etc/nginx/nginx.conf 中定义 nginx.conf:

when I enter some url it should call like below:

http://addons.example.com  => http://localhost:89
http://my.example.com => http://localhost
http://phpmyadmin.example.com => http://localhost:5054

由于我的配置,当我调用时,docker log 中出现了这个错误http://addons.project.com/test.phpproduction_nginx | 2022/02/23 13:49:27 [error] 31#31: *1 open() "/etc/nginx/html/test.php" failed (2: No such file or directory), client: 172.25.0.1, server: my.project.com, request: "GET /test.php HTTP/1.1", host: "addons.project.com"

这是我的 nginx 配置:

events {

}

http {
  client_max_body_size 20m;

  proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1000m;

  server {
    server_name my.example.com;

    location /my.example.com/ {
      proxy_pass http://127.0.0.1:80;
      rewrite ^/my.example.com(.*)$ $1;
    }

    location /addons.example.com/ {
      proxy_pass http://127.0.0.1:89;
      rewrite ^/addons.example.com(.*)$ $1;
    }
  }
}

提前致谢

答案1

您正在寻找虚拟主机设置,而不是location单个server块中的块。

您当前的设置对应于以下 URL:

https://my.example.com/my.example.com -> 127.0.0.1:80
https://my.example.com/addons.example.com -> 127.0.0.1:89

您可能需要单独的server块:

server {
    server_name my.example.com;

    proxy_pass http://localhost;
}

server {
    server_name addons.example.com;

    proxy_pass http://localhost:89;
}

server {
    server_name phpmyadmin.example.com;

    proxy_pass http://localhost:5054;
}

rewrite如果您无法正确配置应用程序的基本 URL,则可能需要这些语句。

相关内容