因此,我尝试做一个非常基本的 Nginx 重定向https://strnordicfin.eu/magnesium-fakta到https://strnordicse.eu/ntr/some/magnesium/(仅训练领域,不用担心)。
我的 nginx 配置如下,
worker_processes 1;
events { worker_connections 1024;
}
http {
server {
listen 80;
location https://strnordicfin.eu/magnesium-fakta {
rewrite https://strnordicfin.eu/magnesium-fakta https://strnordicse.eu/ntr/some/magnesium/$request_uri permanent;
}
}
}
- 但这一切只会给 pod 和 nginx 404 页面带来错误,
[error] 19#19: *1 open() "/etc/nginx/html/magnesium-fakta" failed (2: No such file or directory), client: 10.244.10.130, server: , request: "GET /magnesium-fakta HTTP/1.1", host: "strnordicfin.eu"
我看到 nginx 正在尝试从 pods /etc/nginx/html/magnesium-fakta 打开,这是一个空目录,它应该从中获取信息https://strnordicse.eu/ntr/some/magnesium/。
从网上搜索会给出很多答案,但这些答案中,服务器主要位于现场,而不是在吊舱中。
编辑:做了一些调整,nginx-config 现在是 -
http {
server {
listen 80;
root /;
location https://strnordicfin.eu/magnesium-fakta/ {
return 302 https://strnordicse.eu/ntr/some/magnesium/magnesium-fakta/$request_uri;
}
}
错误信息更改为 -
[error] 20#20: *2 "/magnesium-fakta/index.html" is not found (2: No such file or directory), client: 10.244.8.172, server:
但仍然没有重定向。
答案1
我在这里看到两个问题:
- 您的文档根目录
root <path>
设置不正确。您应该将其设置为包含 Web 文件的文件夹。例如,如果您在/var/www/html
构建 docker 镜像时复制文件,则应将其设置为root /var/www/html
- 您的位置块包含一个 URL,而它应该包含匹配模式,就像您在找到匹配模式时想要实现的目标一样。
因此,根据您的问题,您的最终配置应该是这样的:
http {
server {
listen 80
root /var/www/html;
location ~* /magnesium-fakta {
return 302 https://strnordicse.eu/ntr/some/magnesium/magnesium-fakta/$request_uri;
}
}
}