Plesk环境下Apache运行时Nginx无法启动,如何部署静态网站?
解决Nginx启动失败并同时托管静态站与WordPress的方案
一、先解决Nginx启动失败的核心问题
你遇到的unknown directive "brotli"错误,是因为Nginx未安装Brotli压缩模块,却加载了包含该指令的配置文件。解决方法:
- 临时禁用Brotli配置:
执行命令将Brotli配置文件重命名,避免Nginx加载它:sudo mv /etc/nginx/conf.d/brotli.conf /etc/nginx/conf.d/brotli.conf.bak - 测试Nginx配置:
执行命令验证配置语法是否正常:
如果输出sudo nginx -tnginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置已修复。
二、调整端口与域名转发,实现双站点共存
由于Plesk默认是Nginx作为反向代理、Apache处理动态请求,你当前的端口占用逻辑不合理,需要调整为Nginx监听80端口(对外服务),Apache监听8080端口(处理WordPress动态请求),Nginx根据域名转发请求:
1. 修改Apache监听端口
- 编辑Apache端口配置文件:
sudo nano /etc/apache2/ports.conf - 将文件中的
Listen 80修改为Listen 8080,保存退出(按Ctrl+O,回车,再按Ctrl+X)。 - 重启Apache使配置生效:
sudo systemctl restart apache2
2. 配置Nginx托管静态站点
- 编辑你的静态站配置文件:
sudo nano /etc/nginx/sites-available/bloggrammer - 修改为以下内容(监听80端口,匹配静态站域名):
server { listen *:80; listen [::]:80; server_name bloggrammer.com www.bloggrammer.com; root /var/www/bloggrammer.com; location / { index index.html; } # 静态资源缓存优化(可选) location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } } - 确保配置已启用(如果之前没做过):
sudo ln -s /etc/nginx/sites-available/bloggrammer /etc/nginx/sites-enabled/
3. 配置Nginx反向代理WordPress
- 新建WordPress的Nginx配置文件(替换
your-wordpress-domain.com为你的实际域名):sudo nano /etc/nginx/sites-available/wordpress-proxy - 添加以下反向代理配置:
server { listen *:80; listen [::]:80; server_name your-wordpress-domain.com www.your-wordpress-domain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 启用该配置:
sudo ln -s /etc/nginx/sites-available/wordpress-proxy /etc/nginx/sites-enabled/
4. 重启Nginx并验证
- 再次测试Nginx配置:
sudo nginx -t - 重启Nginx:
sudo systemctl restart nginx - 验证效果:
- 访问
bloggrammer.com:应加载你的静态网站 - 访问WordPress域名:应正常加载WordPress站点
- 访问
三、(可选)后续安装Brotli模块
如果需要启用Brotli压缩,针对Plesk环境,你可以通过Plesk面板或官方工具安装对应模块:
- 登录Plesk面板,进入工具与设置 > 组件,找到Nginx相关组件,勾选Brotli模块进行安装
- 安装完成后,将之前重命名的
brotli.conf.bak改回brotli.conf,重启Nginx即可
内容的提问来源于stack exchange,提问作者Bloggrammer
相关产品推荐
相关产品推荐

