如何使用更安全的https协议?
Nginx 简单指令
Nginx启动: 安装目录下执行 nginx
启动 start nginx
停止 nginx -s stop
重启 nginx -s reopen
重新读取config文件 nginx -s reload
退出nginx nginx -s quit
例如我的nginx安装目录是: C:\Users\Administrator\Desktop\nginx-1.20.0\nginx-1.20.0
/******************/
配置https
首先在腾讯云DNSPOD中为域名添加解析:(下面这条解析的访问是这样的: wzctest.wzc520pyf.cn)

点击SSL按钮免费申请证书
证书申请到后下载证书,并上传到服务器并解压, 如果是Nginx服务则将解压所得目录下的Nginx目录中的文件拷贝到系统Nginx的config目录下, 并重新设置Nginx的config文件(配置时注意https默认端口是443, 当然我们的服务不一定是443, 所以要用nginx映射到其他端口).
服务器的443端口必须放通(一般默认是通的), 如何检查和放通它? 登录腾讯云服务器控制台设置安全组:

(在服务器上检查某一端口是否通畅: cmd命令行执行: telnet 8.8.8.8 1234 如果提示连接失败则是不通, 出现什么也没有的黑框代表通畅 8.8.8.8 是你服务器的ipv4地址 1234是要检查的端口号)
Nginx的config文件配置参考模板:
server {
#SSL 访问端口号为 443
listen 443;
ssl on;
#填写绑定证书的域名
server_name www.xxx.cn;
#证书文件名称
ssl_certificate 1_www.xxx.cn_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.xxx.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
proxy_pass http://172.18.19.189:8082;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
你大概还需要在你项目的根目录下建一个web.config文件, 并在里面写好:
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
重启nginx即可
如果配置正确,在腾讯云控制台可以看到(这里说明一下, 腾讯云控制台监控的是网站ssl解析是否正确,即是否生效,是否可访问,或者说是监控你是否配置正确):

访问项目网站: https://wzctest.wzc520pyf.cn/findGame
// 其中findGame是项目中自定义的路径
那如果我有多个项目怎么办? 在nginx里再写一个server就好了, 端口还是443 ,只是映射到的端口不一样而已. (你可能会疑惑,那nginx在映射时怎么区分这两个项目, 很简单, 域名不一样了啊, 我们不可能为两个不同的项目使用同一个域名吧? ),当然,你也需要在项目里添加一个web.config文件
如果已创建好解析,申请好ssl证书,并将ssl证书部署至服务器, 打开网站仍显示不安全:
证书监控检测的是您具体站点访问结果,这边访问测试提示证书不匹配,建议您排查您的证书安装是否成功绑定wzcblog.wzc520pyf.cn域名的对应SSL证书并重启服务,
极有可能是证书没有正确绑定到对应的域名, 这有可能是你在服务器上配置出错导致(或是没有为项目添加web.config文件).
本文参考博客:
(10条消息) 域名请求配置https(使用腾讯免费SSL证书)_一只小码渣的博客-CSDN博客
如何配置http:
配置正常http也就是配置静态资源, 使用express自带的www服务也没问题, 只需简单的代码即可完成(请参考vue.js+node.js实战 p69)
不过通常我们还是使用nginx发布静态资源比较多,express可以用来启动后台服务,但也常搭配pm2一起使用, 发布vue这样的静态资源还是用nginx吧,
在nginx配置文件里新写一个server即可, 参考:
#静态文件
server {
listen 8080;
server_name localhost;
location / {
root D:/resources/statichtmls;
}
}
#html文件
server {
listen 8080;
server_name 127.0.0.1 localhost;
location / {
root D:/resources/statichtmls;
index index.html index.htm;
}
}
更详细请参考:
(10条消息) nginx实现发布静态资源_lolly1023的博客-CSDN博客
如果是要启动多个服务呢?,同样多写几个server即可:
首先确认服务器释放80端口
以管理员身份cmd 运行nginx
生效后在conf文件夹中找到 nginx.conf文件编辑
server {
listen 80;
server_name www.csdn.com; 域名来源
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
location / {
proxy_pass localhost:8088; #转到哪里,也就是代理
}
}
server {
listen 80;
server_name www.csdn1.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
location / {
proxy_pass http://www.baidu.com; 转到百度
}
}
更具体参考:
(10条消息) Nginx反向代理80端口,实现同一台服务器多个80端口_China-Salter的博客-CSDN博客
如果有一个项目使用的站点是 www.helloword.com, 但是这个项目却有三个服务, 分别是web服务, 金融服务, 手机服务, 该怎么处理?
解决方法仍是nginx反向代理, 通过上下文来区分三者,作不同的代理,参考:
(10条消息) 当“服务器上部署多个Web应用”,使用Nginx反向代理配置_…. 永远年轻,永远热泪盈眶-CSDN博客_nginx 一个端口多个web应用