《nginx伪静态没反应》
一、解决方案
当遇到Nginx伪静态没反应的问题时,要检查配置文件是否正确加载,确保重写规则语法无误,并且要确认站点配置文件中开启了相关模块。如果是在修改配置后未生效,可能是没有重新加载或重启Nginx服务。
二、具体问题解决
(一)检查配置文件加载
查看Nginx的错误日志(一般位于/var/log/nginx/error.log
),如果有报错信息可能指向配置文件中的错误。可以通过命令nginx -t
来测试配置文件是否正确加载。例如:
bash
nginx -t
如果显示nginx: configuration file /etc/nginx/nginx.conf test is successful,表示配置文件加载成功。
(二)确保重写规则语法正确
- 对于常见的WordPress等程序,伪静态规则如下:
nginx
location / {
try_files $uri $uri/ /index.php?$args;
}
这里的try_files指令会尝试匹配请求的文件或者目录,如果都不存在则转发给index.php处理,这是很多基于php的cms常用的伪静态规则。 - 如果是自定义的url重写规则,例如将
example.com/product/id
重写为example.com/product.php?id=123
,可以这样写:
nginx
rewrite ^/product/([0 - 9]+)$ /product.php?id=$1 last;
(三)开启相关模块并重启服务
确保在Nginx安装时已经启用了重写模块,一般默认是开启的。然后执行以下命令重启Nginx:
```bash
systemctl restart nginx
或者
service nginx restart
```
三、其他思路
(一)排查浏览器缓存
有时候浏览器可能会缓存旧的url,清除浏览器缓存后再测试伪静态效果。
(二)服务器防火墙和安全组设置
如果是云服务器,要确保防火墙或安全组允许80端口(http)或443端口(https)的访问,否则可能导致看似伪静态没反应的情况,因为请求根本无法到达Nginx服务器。