我试图让Nginx提供静态内容,同时将其他所有内容反向代理到Rails服务器。
除主页外,所有方法均有效。 如果我转到example.com,则会收到403错误,并且错误日志显示
2019/06/14 04:32:59 [error] 9746#9746: *1 directory index of "/var/www/html/" is forbidden
我希望将请求作为example.com/发送到Rails服务器,而不是尝试(失败)以获取目录列表。 Rails服务器应该显示一个主页。 (旁注:如果我打开自动索引功能,我将获得目录列表)
配置在这里:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com;
index index.html;
location / {
autoindex off;
root /var/www/html;
try_files $uri $uri/ @rails;
expires max;
access_log off;
}
location @rails {
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:3000;
}
}
答案 0 :(得分:1)
修复该主页的方法是为该页面添加一个精确的location
,例如:
location = / {
try_files @rails =404;
}
答案 1 :(得分:1)
如果要对所有URI禁用index
行为,请从$uri/
语句中删除try_files
项。例如:
location / {
try_files $uri @rails;
...
}
有关详细信息,请参见this document。
或者,添加一个新的位置块以专门处理URI /
,例如:
location = / {
try_files nonexistant @rails;
}
有关详细信息,请参见this document。