nginx: [emerg] unexpected “}“ in xxx

Nginx配置重启报错及解决办法
博主复制他人Nginx配置,使用nginx -s reload重启报错,提示意外的“}”。经检查,配置中括号和分号无遗漏,后发现是“//”注释问题,Nginx不用此注释,去掉注释后可正常重启。若仍不行,可拿全新配置复制location内容修改。

我把别人配置的这一段复制过来,用nginx -s reload重启后就报错nginx: [emerg] unexpected “}“ in xxx。

 

但是我对比了下,配置里面的括号跟分号都没有写漏。后面想到了是//注释的问题。。。nginx不是用这个注释的,去掉//那些注释就可以了。

实在不行重新拿一份nginx的全新配置,然后自己复制nginx里面的location内容再修改。

/usr/local/nginx/sbin# ./nginx nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use) nginx: [emerg] bind() to [::]:443 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use) nginx: [emerg] bind() to [::]:443 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use) nginx: [emerg] bind() to [::]:443 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use) nginx: [emerg] bind() to [::]:443 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use) nginx: [emerg] bind() to [::]:443 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (98: Address already in use) nginx: [emerg] still could not bind() 重启nginx
最新发布
08-01
该错误表明 Nginx 在尝试绑定到端口 80、443 或 8066 时失败,原因是这些端口已经被其他进程占用。通常,这种情况发生在系统中已有服务正在监听这些端口,导致 Nginx 无法绑定[^1]。 ### 常见原因及解决方法 1. **检查占用端口的进程** 可以使用 `netstat` 或 `lsof` 命令查找占用端口的进程。例如,检查 80 端口的占用情况: ```bash sudo netstat -tulnp | grep :80 ``` 或者: ```bash sudo lsof -i :80 ``` 如果发现其他服务(如 Apache、另一个 Nginx 实例或其他 Web 服务器)占用了这些端口,则可以停止这些服务或更改其配置以释放端口。 2. **停止占用端口的服务** 如果发现是其他服务占用了端口,可以使用以下命令停止服务。例如,停止 Apache: ```bash sudo systemctl stop apache2 ``` 或者,如果另一个 Nginx 实例正在运行: ```bash sudo nginx -s stop ``` 之后重新尝试启动 Nginx。 3. **更改 Nginx 监听端口** 如果无法释放端口,可以修改 Nginx 的配置文件(通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/sites-available/default`),将监听端口更改为未被占用的端口。例如: ```nginx server { listen 8080; server_name example.com; ... } ``` 保存更改后重新加载 Nginx 配置: ```bash sudo nginx -s reload ``` 4. **检查 Docker 容器端口冲突** 如果在 Docker 环境中运行 Nginx,确保宿主机端口未被占用。可以使用以下命令查看当前运行的容器及其端口映射: ```bash docker ps ``` 如果发现冲突,可以更改 Docker 容器的端口映射,例如: ```bash docker run -p 8080:80 nginx ``` 5. **检查 SELinux 或防火墙设置** 在某些情况下,SELinux 或防火墙规则可能会阻止 Nginx 绑定到特定端口。可以临时禁用 SELinux 或调整防火墙规则以排除此类问题。 6. **重启系统** 如果无法确定哪个进程占用了端口,可以尝试重启系统以释放所有端口并重新启动服务。 ### 总结 端口绑定失败通常是因为端口已被占用。通过检查占用端口的进程、停止冲突服务或更改配置,通常可以解决此问题。对于 Docker 环境,确保宿主机端口未被占用,并根据需要调整端口映射。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值