Прокси-сервер Nginx не работает должным образом

Я использую dokku (small heroku) на хосте с nginx, мой контейнер использует 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, но ни один из них не работал. Я не хочу открывать другой порт на сервере, чтобы исправить это.

0
задан 1 June 2016 в 23:12
1 ответ

Вам нужно проверить страницу, где находится форма, и посмотреть, какой URL, по которому она делает POST-запрос в ней.

Если это http://katalog.domain. eu:8052, вам нужно изменить приложение, генерирующее эту страницу, чтобы оно генерировало правильный URL.

proxy_redirect изменяет только Location и Refresh HTTP-заголовки в проксируемом ответе. Это ничего не меняет в реальном содержимом ответа. Это происходит потому, что фактическое содержимое может быть чем угодно (HTML, XML, двоичных данных и т.д.), и выполнить операции поиска и замены над ними практически невозможно.

.
2
ответ дан 4 December 2019 в 13:40

Теги

Похожие вопросы