【发布时间】:2016-11-23 16:40:18
【问题描述】:
我在 Nginx 反向代理后面设置了一个 Apache 网络服务器,用于处理 SSL 和子域。
它几乎适用于所有事情,除了如果我忘记了 url 末尾的最后一个 /(例如 https://vps.com/url 末尾没有 /),Apache 会将我重定向到它的本地端口(Apache只监听 127.0.0.1,端口 4000,如果我忘记了 /,它会将我重定向到 https://vps.com:4000/url/,这显然不起作用)。
这是我的 nginx 配置:
server {
listen 443 ssl;
// SSL Certificate location & such
access_log /var/log/nginx/apache-ssl-access.log;
error_log /var/log/nginx/apache-ssl-error.log;
server_name <my remote url>;
location ~ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:4000;
}
location ~ /\.ht {
deny all;
}
}
这是处理服务的 apache 配置文件:
<VirtualHost 127.0.0.1:4000>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
LogLevel warn ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我的服务器安装在 Debian8 机器上,运行以下版本:
Apache/2.4.10nginx/1.10.2
我不知道什么是重定向或如何防止这种情况发生,知道吗?
【问题讨论】:
-
问题是?
-
尝试用
proxy_pass http://vps.artemix.xyz:4000/;替换proxy_pass http://127.0.0.1:4000;?