nginx服务器ssl模块添加
ssl模块添加原文:https://www.cnblogs.com/grimm/p/14189153.html,感谢作者大大
Nginx如果未开启SSL模块,配置Https时提示错误:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37
Nginx开启SSL模块流程:
切换到源码包:
cd /usr/local/src/nginx-1.18
查看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_module
运行上面的命令即可,等配置完
配置完成后,运行命令
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服务器。例如,您可以使用远程登录工具(例如,PuTTY、Xshell)登录服务器。
- 执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录(命名为cert)。
- 使用远程登录工具(例如,PuTTY、Xshell)附带的本地文件上传功能,将本地证书文件和密钥文件上传到Nginx服务器的证书目录(示例中为/usr/local/nginx/conf/cert)。
- 编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容。具体配置如下
nginx.conf配置
worker_processes 1;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
limit_req_zone $binary_remote_addr zone=allips:10m rate=1r/s;
server {
listen 443 ssl;
server_name 网站域名;
ssl_certificate cert/对应.pem;
ssl_certificate_key cert/对应.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
limit_req zone=allips burst=2 nodelay; #nodelay 不启用延迟
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
//域名重写,让http重定向https
server{
listen 80;
server_name 域名;
rewrite ^/(.*)$ https://域名:443/$1 permanent;
}
}
express开启ssl
在bin/www中,对www做修改,关键代码如下:
#!/usr/bin/env node
var path = require('path');
var fs = require('fs');
var app = require('../app');
var https = require('https');
var privateKey = fs.readFileSync(path.join(__dirname, '../keys/名字.key'), 'utf8');
var certificate = fs.readFileSync(path.join(__dirname, '../keys/名字.pem'), 'utf8');
//在根目录新建keys文件夹放自己在云服务器下载的key与证书
var credentials = {key: privateKey, cert: certificate};
var httpsServer = https.createServer(credentials, app);
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
httpsServer.listen(port);
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
-------------金猴奋起千钧棒,玉宇澄清万里埃