我正在使用一个非特权的 nginx 容器,它在端口 8080 上运行,我用它来提供一个 Hugo 网站,一切正常,除了当你点击一个标签时,它会将你发送到 /tags/mytag/ ,我一直得到一个 301 重定向,因为容器内的 nginx 在端口 8080 上运行,而我的网站在 443 上,我得到一个错误,因为 nginx 返回带有端口的网站,即 https://mysite:8080/tags/mytag。现在我找到了这个链接nginx 文档
问题是我该如何使用它来解决我的问题,我一直搞不清楚,但一直找不到正确的答案,我做了类似的事情
location /tags/ {
proxy_pass http://localhost:5000/tags;
}
和
location = /tags {
proxy_pass http://localhost:5000/tags/;
}
当然,两种方法都行不通。我在这方面有点力不从心,任何帮助我都会很感激。
经过深入研究后,我认为我找到了一个解决方案,它可以在 docker 中运行容器,现在我需要测试它是否可以在 k8s 中工作,因为我在所有东西前面都有一个入口控制器:
server {
listen 5000;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /tags {
alias /usr/share/nginx/html/tags;
if (-d $request_filename) {
rewrite [^/]$ $scheme://$http_host$uri/ permanent;
}
}
#error_page 404 /404.html;
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
我找到了答案这里
答案1
返回带有端口的站点的不是 nginx。返回重定向的是你的应用程序。
您需要修复应用程序配置,以便其根 URL 正确设置为https://example.com
。