我有以下问题。
在我的本地测试配置中,当我尝试访问https://www.testdomain.local/admin
它时,它总是会将我重定向到https://www.testdomain.local:8443/admin/
我的系统中无法解决的问题。
我的 nginx 在 Docker 容器中运行,该容器将请求转发到端口 443 到端口 8443,nginx 正在监听该端口。
admin 文件夹是根文件夹的子目录。
root -> /application/public/testdomain
root/admin -> /application/public/testdomain/admin
当前行为如下所示:
https://www.testdomain.local -> https://www.testdomain.local (correct)
https://www.testdomain.local/ -> https://www.testdomain.local (correct)
https://www.testdomain.local/admin/ (with trailing slash) -> https://www.testdomain.local/admin/ (correct)
https://www.testdomain.local/admin (without trailing slash) -> https://www.testdomain.local:8443/admin/ (incorrect)
对于最后一种情况,我的首选行为是:
https://www.testdomain.local/admin -> https://www.testdomain.local:8443/admin or https://www.testdomain.local/admin/
我尝试了许多通过 Google 或 ServerFault 找到的解决方案,但无法获得所需的行为。
server {
listen 8443 ssl;
server_name www.testdomain.local;
client_max_body_size 108M;
access_log /var/log/nginx/testdomain.access.log anonymized;
ssl_certificate /application/common/certificate.crt;
ssl_certificate_key /application/common/privatekey.key;
root /application/public/testdomain;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}