我用nginx在主机上使用dokku(小heroku),我的容器是使用apache,它暴露的端口8052。
这是启用和工作正常的.conf里面的configuration:
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>
这是主机上的configuration
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上的网站,但如果你点击任何forms,这使得行动(POST,…)url,如http://katalog.domain.eu/索引更改为http://katalog.domain.eu:8052/index
我已经尝试了不同的proxy_set_headers,但没有一个工作。 我不想在服务器上打开另一个端口来解决这个问题。
您需要检查表单所在的页面,然后查看其中发出POST请求的URL。
如果是http://katalog.domain.eu:8052 ,则需要更改生成该页面的应用程序,以便生成正确的URL。
proxy_redirect仅更改代理响应中的Location和Refresh HTTP标头。 它不会改变响应的实际内容中的任何内容。 这是因为实际内容可能是任何东西(HTML,XML,二进制数据等),并且对其执行search和replace操作实际上是不可能的。