Nginx支持https访问(将网址http修改为https访问)
说明:小程序一期开发完成,将要上线的时候微信小程序提示只能使用https完成线上访问,然后就需要修改自己的nginx配置。
首先需要https证书
我们项目小程序开发的证书是公司支持的,由公司项目分配ssl证书。我们分配的是一个jks文件和ssl证书的密码。腾讯云或者阿里云的证书申请需要去官方查询,都有详细教程。然后阿里云的证书给的是文件压缩包(pem文件与key文件),这个文件压缩包是你的公私钥,需要在nginx配置。
centos7支持SSL
- 先进行SSL模块下载
-y指的是自动处理依赖性关系,并且一次安装所有依赖的软件包,无需每次手动确认
yum install -y gcc
yun install -y openssl openssl-devel
- SSL模块验证,出现版本信息即为安装成功
Nginx支持ssl模块
默认情况下,nginx不支持ssl,该模块并未被安装。我们需要指定-with-http_ssl_module配置。
- 我们进去nginx文件夹,我的路径是/home/okwzh/install/nginx-1.20.1/
cd /home/okwzh/install/nginx-1.20.1/
- 修改nginx配置信息
./configure --prefix=你的nginx路径 --with-http_stub_status_module --with-http_ssl_module
- 进行make,我看网上博客都是make,不要make install。需要将配置文件给覆盖,不要重新编译。然后我是重新编译,并没有出错,覆盖的话我没有试过。https://blog.csdn.net/duyusean/article/details/79348613,https://www.cnblogs.com/mingyue5826/p/10782950.html这是我看人家覆盖的博客,你们可以试试这个。
make
- 我的话是直接进行make,make install,然后并没有出现错误,重新编译不会改变你之前的nginx配置文件。
make install
- 重启nginx
./nginx -s reload # 重启nginx
- 这是我的nginx版本详细信息,支持SSL。
将阿里云或腾讯云的证书文件放在nginx配置文件夹里
- 这里可以使用xftp或者lrzsz命令,将两个文件上传到你的服务器里,然后放在conf配置文件夹中,
yum install -y lrzsz
# rz上传本地文件
# sz 下载文件到本地
- 这里是我的配置文件夹,pem与key文件是阿里云的证书文件,pem是公钥,key是私钥。ssl_1.key是我的私钥备份文件。
将nginx配置文件nginx.conf里的http server服务修改为https server服务
- 修改nginx.conf文件,配置ssl信息
#ssl文件地址
ssl_certificate /home/okwzh/install/nginx-1.20.1/conf/ssl.pem; #这里是你的pem公钥文件,路径要写绝对路径
ssl_certificate_key /home/okwzh/install/nginx-1.20.1/conf/ssl.key; #这里是你的key私钥文件,路径要写绝对路径
#ssl on; # 打开ssl支持,1.15版本以后就默认打开,不需要配置
#ssl相关配置
ssl_session_timeout 5m; # 缓存有效期
ssl_prefer_server_ciphers on; # 如果不指定默认为off,当为on时,在使用SSLv3和TLS协议时,服务器加密算法将优于客户端加密算法。
ssl_protocols SSLv2 SSLv3 TLSv1.2; # 安全连接可选的加密协议
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 配置ssl加密算法
ssl_session_cache shared:SSL:1m;
- 将之前的http server服务改为使用https server服务
http {
server {
#http服务
}
#HTTPS server
server {
# 使用nginx https服务
}
}
- 配置文件
http {
server {
#之前的http服务配置,将它修改到https下。
}
#HTTPS server
#
server {
#监听端口
listen 8071 ssl;
#监听地址,写成域名或者ip地址
server_name 101.89.119.204;
#ssl on; # nginx 1.15以及更新的版本,不在支持ssl on;的写法 了
#ssl文件地址
ssl_certificate /home/okwzh/install/nginx-1.20.1/conf/ssl.pem;
ssl_certificate_key /home/okwzh/install/nginx-1.20.1/conf/ssl.key;
#ssl相关配置
ssl_session_timeout 5m; # 缓存有效期
ssl_prefer_server_ciphers on; # 使用服务器端的首选算法
ssl_protocols SSLv2 SSLv3 TLSv1.2; # 安全连接可选的加密协议
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_session_cache shared:SSL:1m;
# 项目中的静态文件地址(django项目)
location /static {
alias /home/iptv_application_install_applet/static/;
}
# 从8080端口过来的请求,跳转到这个地址(这个是http请求,socket没有配置)
location / {
#root html;
#index index.html index.htm;
include uwsgi_params;
#记得一定要跟uwsgi中的端口保持一致,不然无法访问uwsgi启动的服务
proxy_pass http://127.0.0.1:8000/;
}
client_max_body_size 75M;
client_header_timeout 10s;
client_body_timeout 20s;
send_timeout 30s;
client_body_buffer_size 8k;
add_header X-Content-Type-Options nosniff;
add_header 'Referrer-Policy' 'origin';
add_header X-Download-Options "noopen" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security value;
add_header X-Permitted-Cross-Domain-Policies "master-only";
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "default-src 'unsafe-inline' 'unsafe-eval' mediastream: ";
add_header X-Content-Type-Options: nosniff;
add_header X-XSS-Protection "1; mode=block";
}
}
- 检查nginx配置文件
cd sbin
./nginx -t
5. 重新启动nginx
/home/okwzh/install/nginx-1.20.1/sbin/nginx -c /home/okwzh/install/nginx-1.20.1/conf/nginx.conf
nginx命令
nginx -V # 查看nginx详细版本信息
nginx -s stop # 停止nginx服务
nginx -s reload # 重启nginx服务
nginx绝对路径 -c nginx配置文件 # 启动nginx服务
ps -ef | grep nginx # 查看nginx进程
kill -9 nginx_PID # 关闭nginx进行服务