Apache-2.2
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,…)網址,例如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、二進制數據等),並且幾乎不可能在其上執行搜尋和替換操作。