Nginx 代理未按预期工作

Nginx 代理未按预期工作

我在带有 nginx 的主机上使用 dokku(小型 heroku),我的容器使用 apache,它公开端口 8052。

这是 .conf 内部的配置,已启用并且运行良好:

LISTEN 8052
<VirtualHost *:8052>
    ServerAdmin veeenex@localhost

    DocumentRoot /var/www
    <Directory />
        Options +FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options +FollowSymLinks +ExecCGI
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    FCGIWrapper /phpfarm/inst/php-5.2/bin/php-cgi .php
    AddHandler fcgid-script .php

    LogLevel warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这是主机上的配置

upstream katalog.domain.eu {
  server 172.17.0.3:8052;
}

server {
  listen      [::]:80;
  listen      80;
  server_name katalog.domain.eu;
  access_log  /var/log/nginx/katalog.domain.eu-access.log;
  error_log   /var/log/nginx/katalog.domain.eu-error.log;


  location    / {
    proxy_pass  http://katalog.domain.eu;
    proxy_http_version 1.1;
    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;
    proxy_redirect http://172.17.0.3:8052 https://katalog.domain.eu;

  }

  include /home/dokku/katalog.domain.eu/nginx.conf.d/*.conf;
}

它正在工作 - 因为我可以看到该网站http://katalog.domain.eu,但如果你点击任何表单,就会使操作(POST,...)url 类似于http://katalog.domain.eu/index更改为http://katalog.domain.eu:8052/index

我已经尝试过不同的 proxy_set_headers,但都不起作用。我不想在服务器上打开另一个端口来解决这个问题。

答案1

您需要检查表单所在的页面,查看其中发出 POST 请求的 URL 是什么。

如果是的话http://katalog.domain.eu:8052,您需要更改生成该页面的应用程序,以便它生成正确的 URL。

proxy_redirect仅更改代理响应中的LocationRefreshHTTP 标头。它不会更改响应的实际内容。这是因为实际内容可以是任何内容(HTML、XML、二进制数据等),并且对其运行搜索和替换操作实际上是不可能的。

相关内容