我有以下 nginx 配置:
upstream toshiba15 {
server toshiba15.local:80;
}
server {
listen 443 ssl;
server_name my.domain.com;
ssl_certificate /etc/nginx/ssl/startssl-nginx.crt;
ssl_certificate_key /etc/nginx/ssl/startssl-nginx.key;
root /usr/share/nginx/html/;
location /dev/ {
proxy_pass http://toshiba15/;
proxy_redirect http://toshiba15/ /dev/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
大部分都按预期工作,但有一个问题 - 当我在 uri 中指定不存在的子目录时,它会显示代理(toshiba15)服务器根目录中的内容!
代理服务器具有库存 nginx 配置 - 没有变化。
编辑:我通过添加另一台返回 404 的服务器并使用正则表达式来解决子域名问题
此外,如果我指定未定义的子域,它会重定向到代理服务器的根目录(my.domain.com)
谢谢!
答案1
好的,我知道该怎么做了。在上游服务器上,我将 root 和 index 指令移到了 location 块内,并删除了 tries。
在代理上,为了解决子域名问题,我在顶部设置了一个没有服务器名称的 catch-all,并返回了 404。我在主域名中添加了一个正则表达式。