Nginx论坛子域名服务器块无法正确重定向,访问时跳转至网站根目录
嘿,我瞅了下你的问题和错误日志,发现核心问题是你的论坛子域名server块根本没被Nginx匹配到!你看错误日志里的server: _,这代表请求走的是Nginx的默认server配置,而不是你专门为forum.project-freedom.net写的那个块,所以才会去/var/www/html(主站目录)找文件,自然就跳转到根目录了。
给你几个排查和修复的步骤,按顺序来:
先确认论坛的server配置是否真的启用了
虽说你说已经启用了,但再仔细核对下:运行ls -l /etc/nginx/sites-enabled/,看看里面有没有指向你论坛配置文件的软链接?如果没有的话,赶紧用这条命令补上:ln -s /etc/nginx/sites-available/你的论坛配置文件名 /etc/nginx/sites-enabled/检查默认server块是否抢占了请求
打开/etc/nginx/sites-available里的默认配置(通常叫default),看看里面的listen指令是不是带了default_server,比如:listen 80 default_server; listen [::]:80 default_server;如果是的话,这个默认块会接住所有没匹配到对应
server_name的请求。解决办法优先选这个:把默认块的server_name改成你的主域名(比如server_name project-freedom.net;),这样论坛的请求就会精准匹配到你专门写的块。验证Nginx配置语法,重新加载配置
先运行nginx -t检查配置有没有语法错误,要是报错了就根据提示修复(比如括号没关、路径写错之类的)。确认没问题后,重新加载配置让改动生效:sudo systemctl reload nginx清浏览器缓存试试
错误日志里提到了service_worker.js,这可能是主站的PWA缓存在搞鬼,导致浏览器还在走旧的重定向规则。用隐私模式访问论坛,或者清掉浏览器缓存再试试。
另外,给你调整后的论坛server块参考,加上IPv6的监听,确保覆盖所有请求:
server { listen 80; listen [::]:80; server_name forum.project-freedom.net; root /var/www/forum; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.0-fpm.sock; } }
备注:内容来源于stack exchange,提问作者Michael Griffith

