我正在尝试举办Shiny 服务器在我的网站的 /shiny/ 子路径上。使用下面的配置,我可以通过 www.example.com/shiny/demo/ 访问我的演示应用程序。
但是,当我从 URI 中排除最后一个斜杠时,我最终会转到 www.example.com/demo/,而这个网站并不存在。我不知道配置的哪一部分会导致此重定向:虽然我知道,但rewrite_log on
在 error.log 中却看不到任何内容。如果我删除重写或从 proxy_pass 中删除尾部斜杠,一切都会停止工作。location 指令中的尾部斜杠并不是必需的(我想?)但我宁愿保留它,删除它似乎也没什么区别。我不确定我是否需要 proxy_redirect,但删除它并不能解决问题。
关于如何修复我的配置,以便从 /shiny/demo 到 /demo/ 的重定向转到 /shiny/demo/,有什么建议吗?
我的配置,相关位置在底部:
# Redirect to HTTPS
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# Redirect to www subdomain
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
# Main server
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /path/to/root;
index index.php;
server_name www.example.com;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
location / {
if ($request_uri ~ ^/(.*)\.html$) { return 302 /$1; }
try_files $uri /$uri $uri.html $uri.php$is_args$query_string;
}
location ~ \.php$ {
if ($request_uri ~ ^/([^?]*)\.php($|\?)) { return 302 /$1$is_args$query_string; }
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ^~ /shiny/ {
rewrite_log on;
rewrite ^/shiny/(.*)$ /$1 break;
proxy_pass http://localhost:1234/;
proxy_redirect http://localhost:1234/ $scheme://$server_name/shiny/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}