Aug*_*ger 3 ruby-on-rails nginx
我正在设置一个带有 nginx 的 Rails 应用程序。
我想要的是首先检查 URL 是否对 Rails 有意义,然后提供公共文件夹的内容。
我无法做到这一点:
upstream extranet {
server localhost:3000;
}
server {
location / {
try_files @extranet $uri;
root /var/www/extranet/public;
}
location @extranet {
proxy_pass http://extranet;
proxy_read_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Host $host;
client_max_body_size 100m;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:*1 rewrite or internal redirection cycle while internally redirecting to "/"错误。
看起来try_files $uri @extranet;可行,但在我的情况下,首先检查 Rails 应用程序感觉更安全,因为公用文件夹可能会更改。
try_files 检查本地文件系统上是否存在文件,并且无法响应来自代理的响应代码。
据推测,如果远程页面不存在,代理响应带有404响应,可以通过error_page语句拦截。
例如:
location / {
proxy_pass http://extranet;
proxy_set_header ...
proxy_set_header ...
proxy_set_header ...
proxy_intercept_errors on;
error_page 404 = @fallback;
}
location @fallback {
root /var/www/extranet/public;
try_files $uri =404;
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此文档。
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |