我有一个带有 nginx + puma 的 rails 应用程序
我将这些位置添加到我的 nginx 站点配置中:
location = /helloworld.html {
ssi on;
proxy_set_header Accept-Encoding "";
proxy_pass https://liveblog.dday.it/api/upload-raw/blogs/5c20ff839a954a50bec0a4b9/index.html;
}
location = /helloworld2.html {
root html;
}
我不明白为什么最后一个有效,第一个重定向到我的rails应用程序。
编辑
我了解这个问题,问题是我的主要域名是 dday.it
server {
listen 80;
listen [::]:80;
server_name dday.it www.dday.it;
return 301 https://www.dday.it$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name dday.it;
return 301 https://www.$server_name$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl on;
ssl_certificate /etc/letsencrypt/live/dday.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dday.it/privkey.pem;
server_name www.dday.it;
root /var/apps/dday.it/current/public;
try_files $uri/index.html $uri @puma_dday.it;
}
如果我通过代理传递到其他域,例如 example.com,则一切正常。如果我通过代理传递到 liveblog.dday.it,则会发生“循环”。
答案1
第一个位置将请求重定向到新链接,第二个位置表示对 yoursite/helloworld2.html 的请求在本地路径 html 中查找。
如果你尝试这样做:
location = /helloworld2.html {
root /var/www/html;
index index.html
}
并将此 index.html 放入路径中
<!DOCTYPE HTM>
<html>
<head>
<title>I'm Hello World 2</title>
</head>
<body>
<center><h1>Hello World 2</h1></center>
</body>
</html>
这将向您显示 index.html 的内容