我无法弄清楚以下问题。基本上,我们有一个杰基尔我们决定在服务器上将博客与主要网站物理分离,即它不从主应用程序服务器的根目录提供服务。配置如下:
upstream unicorn {
server 127.0.0.1:3000;
}
server {
listen 4430;
root /app/current/public;
server_name example.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Strict-Transport-Security: "max-age=31556926; includeSubDomains";
proxy_redirect off;
location ~* ^/assets {
expires max;
add_header Cache-Control public;
break;
}
location ~* ^/admin {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://unicorn;
}
location ~* ^/dashboard_api {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://unicorn;
}
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location ~ /blog {
alias /app/blog/current/;
}
location @app {
auth_basic off;
proxy_pass http://unicorn;
}
# Turn on maintenance mode if the maintenance template exists
if (-f $document_root/system/maintenance.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /system/maintenance.html last;
break;
}
}
我在这里谈论的是 /blog 位置。基本上,博客文件(那些只是静态 HTML 文件)的位置不在 /app/current/public 中,而是在 /app/blog/current 中。我遇到的问题是,每次用户尝试通过以下 URL 访问博客时:http://example.com/blog,请求失败,用户被重定向到http://example.com:4430/blog/。但是,当用户添加尾部斜杠时,即当他访问 http://example.com/blog/,一切都按预期进行。同样的事情发生在每篇博客文章上http://example.com/blog/post1失败,http://example.com/blog/post1/成功。我正在尝试弄清楚如何配置 nginx,以便添加尾部斜杠,并且没有斜杠的请求将不会失败。另外,我想知道为什么会发生上述重定向到 exmple.com:4430。
任何帮助将不胜感激!
答案1
解决这个问题的方法是添加
port_in_redirect 关闭;
现在一切正常。