Я использую 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, но если вы нажмете на любую форму, URL-адрес действия (POST, ...) будет похож на http://katalog.domain.eu/index изменения к http://katalog.domain.eu:8052/index
Я уже пробовал разные proxy_set_headers, но ни один из них не работал. Я не хочу открывать другой порт на сервере, чтобы это исправить.
Вам нужно проверить страницу, на которой расположена форма, и посмотреть, какой URL-адрес отправляет в нее запрос POST.
Если это http://katalog.domain.eu:8052
, вам необходимо изменить приложение, генерирующее эту страницу, чтобы оно генерировало правильный URL.
proxy_redirect
меняет только Location
и Refresh
Заголовки HTTP в прокси-ответе. Это ничего не меняет в фактическом содержании ответа. Это связано с тем, что фактическое содержимое может быть любым (HTML, XML, двоичные данные и т. Д.), И выполнение операций поиска и замены на нем практически невозможно.