ruby-on-rails - Nginx 反向代理而不是目录列表
问题描述
我试图让 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;
}
}
解决方案
主页的修复方法是为主页添加精确location
值,如下所示:
location = / {
try_files @rails =404;
}
推荐阅读
- c++ - 返回引用返回函数的局部引用与局部变量
- flutter - 颤振图像选择器maxDuration问题
- ios - 如何从 Google Drive (Swift 5) 播放音频文件
- spring-boot - 使用 Springboot 的 API 网关
- angular - 获得响应后在传单上渲染大量动态标记需要大量时间
- c# - EF Core 获取两个属性与列表中的一对属性匹配的记录
- html - React:如何在组件内对齐组件?
- javascript - 如何使jQuery事件回调中的this默认引用jQuery对象
- android - Gridview过滤器在android中不起作用
- python - Discord.py 狙击命令