我在 Apache 网络服务器 (:8080) 前运行 nginx (:80)
Nginx 配置(片段):
location / {
proxy_pass http://www.domain.tld:8080;
proxy_set_header X-Real-IP $remote_addr;
如果我设置 localhost 而不是 www.domain.tld,我的浏览器将被重定向到http://本地主机:8080。
Apache 重写规则:
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) http://%{HTTP_HOST}/$1/ [L,R=301]
RewriteCond %{REQUEST_URI} !v2/
RewriteRule ^(.*)$ v1/$1 [L]
到目前为止,一切都很好。
然而,每个链接(使用相对路径)都显示为http://www.domain.tld:8080/页而不是停留在端口 80 上。
有没有办法通过重写规则解决这个问题?我不想使用绝对路径。
谢谢
答案1
通过将这个添加到 nginx 配置来解决:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;