nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/con.d/xxx.conf:8

本文介绍在阿里云服务器Centos6.8 64位环境下,配置Nginx支持HTTPS并安装证书的过程。当遇到未知指令ssl错误时,通过重新编译Nginx并启用http_ssl_module模块来解决此问题。

给阿里云服务器(Centos6.8 64位)配置https,安装证书的时候,报错了:

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/con.d/xxx.conf:8

大概意思是找不到或者,没有安装OpenSSL,但是我whereis openssl,是能找到的,那应该就是没有配置openssl,

然后就重新配置一下:

  1. 进入Nginx安装目录:cd /usr/local/src/nginx-1.10.3
  2. ./configure --with-http_ssl_module
  3. make
  4. cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak,然后输入Y
  5. 覆盖旧的:cp objs/nginx /usr/local/nginx/sbin/nginx
  6. 测试一下是否成功:/usr/local/nginx/sbin/nginx -t ,如图代表成功
  7. 重启Nginx(cd /usr/local/nginx/sbin,./nginx -s reload)
<think>我们收到了一个新的Nginx配置错误:`[emerg] unknown directive "、"`,出现在配置文件第51行。这个错误表明Nginx在解析配置文件时遇到了一个它不认识的指令,而指令名是“、”。这通常是由于在配置文件中错误地使用了中文字符(如中文逗号)代替了英文标点符号(如英文逗号)导致的。 ### 错误分析: - **未知指令 "、"**:这里的“、”是中文输入法下的顿号,而Nginx配置文件中所有指令和参数都必须使用英文符号。在Nginx配置中,指令名和参数之间应该用空格或英文符号分隔,而中文标点符号(如顿号、逗号、分号等)会被视为指令的一部分,从而引发解析错误。 ### 解决步骤: 1. **定位错误行**: - 打开配置文件:`sudo nano /usr/local/nginx/conf/nginx.conf` - 跳转到第51行(在nano编辑器中:按`Ctrl+_`,然后输入51,回车)。 2. **检查并替换错误字符**: - 在第51行附近查找是否有中文顿号(“、”)或其他中文字符(如中文逗号“,”、中文分号“;”等)。 - 特别注意指令参数之间的分隔符,例如在`server_name`指令中多个域名之间应该使用英文空格,而不是顿号或逗号。例如: - 错误写法:`server_name example.com、www.example.com;` - 正确写法:`server_name example.com www.example.com;` - 将任何非英文字符替换为对应的英文字符(如空格、英文逗号、英文分号等)。 3. **重新测试配置**: ```bash sudo nginx -t ``` - 如果成功,输出将显示“syntax is ok”和“test is successful”。 - 如果失败,根据新的错误提示继续修复。 4. **重载Nginx服务**: ```bash sudo systemctl reload nginx # 或者使用 sudo nginx -s reload ``` ### 预防措施: - 在编辑配置文件时,确保输入法处于英文状态。 - 使用支持语法高亮的文本编辑器(如VS Code、Sublime Text等),并安装Nginx配置语法插件,以帮助识别非法字符。 - 在保存文件前,使用`nginx -t`命令进行测试。 §§相关问题§§ 1.Nginx配置文件中,哪些字符是合法的分隔符,用于分隔指令和参数? 2. 如何避免在编辑配置文件时不小心输入中文字符? 3. 除了未知指令错误,还有哪些常见的配置错误是由于使用了非英文字符导致的? 4. 如何配置文本编辑器(如VS Code)来高亮显示Nginx配置文件中的语法错误? 5. 如果Nginx配置错误提示的行号不准确,应该采用什么策略来定位和修复错误?</think>Nginx 错误提示 `[emerg] unknown directive "、"` 表示在配置文件第 51 行存在非法字符 "、"(中文顿号),Nginx 无法识别该指令。这种错误通常是由于在配置文件中意外使用了中文字符代替英文符号造成的。解决方法如下: 1. **定位错误行**: - 打开配置文件:`sudo nano /usr/local/nginx/conf/nginx.conf` - 跳转至第 51 行(在 nano 中按 `Ctrl+_` 输入 51) 2. **识别并修正非法字符**: - 查找并删除所有中文字符(特别是顿号、逗号、分号等) - 常见问题场景: ```nginx # 错误示例(使用中文顿号) server_name domain1、domain2; # 正确写法(使用英文逗号) server_name domain1, domain2; ``` 3. **验证配置**: ```bash sudo nginx -t # 重新测试配置文件 ``` 4. **预防措施**: - 编辑时关闭中文输入法 - 使用支持语法高亮的编辑器(如 VS Code) - 在关键符号后添加空格(如 `;` 前加空格)便于识别 **常见错误模式**: - 在参数分隔符(`,`)、路径分隔符(`/`)或指令结束符(`;`)位置误用中文符号 - 复制粘贴时带入隐藏的Unicode字符 - 在注释行意外使用中文标点
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值