Nginx启动SSL功能

本文介绍如何为已安装的Nginx添加SSL模块,实现HTTPS服务,并提供配置示例。同时,还介绍了Nginx SSL性能调优的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx启动SSL功能,并进行功能优化,你看这个就足够了

一:开始Nginx的SSL模块

1.1 Nginx如果未开启SSL模块,配置Https时提示错误

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.6.2目录

1.2 Nginx开启SSL模块

切换到源码包:

cd /usr/local/src/nginx-1.11.3

查看nginx原有的模块

/usr/local/nginx/sbin/nginx -V

在configure arguments:后面显示的原有的configure参数如下:

--prefix=/usr/local/nginx --with-http_stub_status_module

那么我们的新配置信息就应该这样写:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modul

运行上面的命令即可,等配置完

配置完成后,运行命令
make

这里不要进行make install,否则就是覆盖安装

然后备份原有已安装好的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)

cp ./objs/nginx /usr/local/nginx/sbin/

然后启动nginx,仍可以通过命令查看是否已经加入成功

/usr/local/nginx/sbin/nginx -V 

Nginx 配置Http和Https共存

server {
listen 80 default backlog=2048;
listen 443 ssl;
server_name wosign.com;
root /var/www/html;
ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;
ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;
}

把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用

Nginx 配置SSL安全证书重启避免输入密码

可以用私钥来做这件事。生成一个解密的key文件,替代原来key文件。
openssl rsa -in server.key -out server.key.unsecure

Nginx SSL性能调优

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载于:https://www.cnblogs.com/daxigua/p/8981078.html

<think>我们注意到用户的问题是关于在Nginx二进制安装后如何配置并启动SSL功能。虽然用户之前的问题是关于HTTPS跳转到HTTP,但根据引用内容,用户可能已经完成了Nginx的安装(包括通过源码编译安装),现在需要配置SSL以启用HTTPS服务。 根据引用内容,用户可能已经通过源码编译的方式安装了Nginx(引用[1]中提到了`./configure`和`make`等步骤),并且可能遇到了一些问题(如引用[1]中提到的关于`ngx_http_upstream_srv_conf_t`结构体没有`default_port`成员的问题,并给出了解决方案)。此外,引用[2]展示了Nginx的配置测试和目录结构,引用[3]则说明了pcre库的作用。 因此,用户当前的需求是:在已经安装好的Nginx(可能是通过源码编译安装)上,如何配置SSL证书并启动HTTPS服务。 ### 配置Nginx启用SSL的步骤 #### 1. 准备SSL证书 在配置SSL之前,需要准备有效的SSL证书和私钥。通常包括: - 证书文件(例如:`your_domain.crt`或`your_domain.pem`) - 私钥文件(例如:`your_domain.key`) 如果是自签名证书,可以使用OpenSSL生成: ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /path/to/your_domain.key \ -out /path/to/your_domain.crt ``` 按照提示输入相关信息(如国家、地区、组织等),其中Common Name应填写域名。 #### 2. 配置Nginx服务器块(Server Block) 编辑Nginx配置文件(通常位于`/usr/local/nginx/conf/nginx.conf`或`/etc/nginx/nginx.conf`,或者在`conf.d`目录下新建配置文件,如引用[2]中所示),添加一个监听443端口的服务器块: ```nginx server { listen 443 ssl; server_name your_domain.com; # 替换为你的域名 # SSL证书配置 ssl_certificate /path/to/your_domain.crt; # 证书路径 ssl_certificate_key /path/to/your_domain.key; # 私钥路径 # SSL优化配置(可选) ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; # 推荐使用较新的协议 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # 其他配置(如根目录、代理等) location / { root html; index index.html index.htm; } } ``` #### 3. 配置HTTP重定向到HTTPS(可选,但推荐) 为了强制使用HTTPS,可以配置一个监听80端口的服务器块,将所有HTTP请求重定向到HTTPS: ```nginx server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; # 永久重定向到HTTPS } ``` #### 4. 检查配置文件并重启Nginx - 检查配置文件语法: ```bash nginx -t ``` 如果看到`syntax is ok`和`test is successful`,则说明配置正确(如引用[2]中所示)。 - 重启Nginx以使配置生效: ```bash nginx -s reload ``` 或者如果Nginx尚未运行,则启动: ```bash nginx ``` #### 5. 验证SSL配置 使用浏览器访问`https://your_domain.com`,确认是否能够通过HTTPS访问。如果使用自签名证书,浏览器会显示安全警告,需要手动信任。 也可以使用命令行工具验证: ```bash curl -I https://your_domain.com ``` ### 常见问题及解决 1. **SSL证书路径错误**: - 确保`ssl_certificate`和`ssl_certificate_key`指向的文件路径正确,且Nginx进程有读取权限。 2. **端口443被占用**: - 使用`netstat -tuln | grep 443`检查是否有其他进程(如Apache)占用了443端口。 3. **权限问题**: - 如果使用非root用户运行Nginx,确保私钥文件(`.key`)的权限设置为600(仅所有者可读): ```bash chmod 600 /path/to/your_domain.key ``` 4. **缺少SSL模块**: - 如果在编译安装Nginx时没有包含SSL模块,则无法使用SSL功能。可以通过以下命令检查Nginx是否包含SSL模块: ```bash nginx -V 2>&1 | grep -o with-http_ssl_module ``` 如果输出为空,则需要重新编译Nginx并添加`--with-http_ssl_module`选项(参考引用[1]中的编译步骤): ```bash ./configure --prefix=... --with-http_ssl_module # 其他参数保持不变 make make install ``` ### 相关问题 1. **如何为Nginx申请免费的Let's Encrypt SSL证书?** 2. **如何配置Nginx支持HTTP/2?** 3. **如何优化NginxSSL性能?** 4. **如何解决浏览器提示“您的连接不是私密连接”的问题?** 5. **如何配置NginxSSL双向认证?** [^1]: 关于Nginx编译安装和模块添加的说明 [^2]: Nginx配置测试和目录结构示例 [^3]: pcre库在Nginx中的作用(支持rewrite模块)</think>### 配置 Nginx 启动 SSL 功能的完整指南 以下是针对二进制安装的 Nginx 配置 SSL 证书并启用 HTTPS 服务的详细步骤: --- #### 1. 准备 SSL 证书 ```bash # 创建证书目录(根据实际安装路径调整) sudo mkdir -p /web/nginx-install/ssl cd /web/nginx-install/ssl # 生成自签名证书(生产环境应使用正规 CA 证书) openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout server.key \ -out server.crt \ -subj "/C=CN/ST=Beijing/L=Beijing/O=YourCompany/CN=yourdomain.com" ``` --- #### 2. 配置 Nginx SSL 服务器块 编辑配置文件(根据引用[2]的路径示例): ```bash sudo vim /apps/nginx/conf/conf.d/ssl.conf ``` ```nginx # HTTPS 服务器配置 server { listen 443 ssl; server_name yourdomain.com; # SSL 证书路径(根据实际位置调整) ssl_certificate /web/nginx-install/ssl/server.crt; ssl_certificate_key /web/nginx-install/ssl/server.key; # SSL 优化参数 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 网站根目录 root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } # 错误页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` --- #### 3. 配置 HTTP 重定向到 HTTPS(可选但推荐) 在同一目录创建重定向配置: ```bash sudo vim /apps/nginx/conf/conf.d/redirect.conf ``` ```nginx server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; # 永久重定向到HTTPS } ``` --- #### 4. 检查并重启 Nginx ```bash # 检查主配置文件是否包含 conf.d 目录(如引用[2]所示) sudo grep "include" /apps/nginx/conf/nginx.conf # 测试配置语法 sudo nginx -t # 重启服务 sudo nginx -s reload ``` --- #### 5. 验证 SSL 配置 ```bash # 检查监听端口 sudo netstat -tuln | grep 443 # 测试 HTTPS 连接 curl -I https://yourdomain.com --insecure # 自签名证书需加 --insecure # 在线检测 https://www.ssllabs.com/ssltest/ ``` --- ### 常见问题解决 1. **SSL 模块未启用**: ```bash nginx -V 2>&1 | grep -o with-http_ssl_module ``` 若无输出,需重新编译安装: ```bash ./configure --with-http_ssl_module # 添加其他原编译参数 make && make install ``` 2. **证书权限问题**: ```bash sudo chmod 600 /web/nginx-install/ssl/server.* sudo chown nginx:nginx /web/nginx-install/ssl/server.* ``` 3. **端口冲突**: ```bash sudo semanage port -a -t http_port_t -p tcp 443 # SELinux环境 sudo firewall-cmd --add-port=443/tcp --permanent # Firewalld ``` --- ### 相关问题 1. **如何为 Nginx 申请免费的 Let's Encrypt 证书?** 2. **如何配置 Nginx 支持 HTTP/2 协议?** 3. **如何解决浏览器提示 "您的连接不是私密连接" 的问题?** 4. **如何优化 NginxSSL/TLS 性能?** 5. **如何配置 NginxSSL 双向认证?** [^1]: Nginx 编译安装及模块问题解决 [^2]: Nginx 配置文件结构示例 [^3]: PCRE 库在 Nginx 中的作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值