Nginx搭建https服务

下载安装

Nginx 1.16.1 官方下载链接

前往官网下载Nginx 并上传到服务器

或者在服务器上

cd /opt
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module

检查ssl模块

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

在这里插入图片描述
如果出现 --with-http_ssl_module
说明Nginx的ssl模块已经安装完成

生成 ssl证书

安装ssl依赖

yum install openssl
yum install openssl-devel

还是在opt目录下去生成秘钥
生成时会需要键入一个标识

cd /opt
mkdir https
cd https
openssl genrsa -des3 -out server.key 1024
//生成证书颁发机构,用于颁发公钥
openssl genrsa -des3 -passout pass:myhost -out ssl.pass.key 2048
openssl rsa -passin pass:myhost -in ssl.pass.key -out server.key
rm -rf ssl.pass.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
rm -rf server.csr

Nginx Https配置

打开nginx配置文件

cd /usr/local/nginx/conf
vi nginx.conf

可以看到原先nginx配置的https服务默认是注释掉的
将注释解开后修改为如下配置

# HTTPS server
    server {
        listen       443 ssl;
        #server_name要改为和自己需要使用的域名完全匹配
        server_name  www.xxx.com;
		# 我们之前生成的秘钥和证书
        ssl_certificate      /opt/https/server.crt;
        ssl_certificate_key  /opt/https/server.key;
		#session缓存
        ssl_session_cache    shared:SSL:1m;
        #session超时时间
        ssl_session_timeout  5m;
        # ssl支持的加密方式(因为微信小程序需要TLSv1.2,所以这里添加了额外的支持方式)
		ssl_protocols  SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        #将api的请求转发
		location /api/ { 
			#后台服务地址
			proxy_pass https://127.0.0.1:8443/;
				proxy_set_header Host $host;
				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;
		}
    }

nginx启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

nginx 重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

检查进程存活

ps -aux |grep nginx

在这里插入图片描述

### 配置 Nginx 运行本地 HTTPS 服务器 为了使 Nginx 支持 HTTPS 协议,需确保已安装 OpenSSL 并获取有效的 SSL/TLS 证书与私钥。对于开发环境而言,可以创建自签名证书用于测试目的。 #### 创建自签名SSL证书 通过 OpenSSL 工具生成自签名证书及其对应的私钥: ```bash openssl req -keyout /etc/ssl/private/nginx-selfsigned.key \ -out /etc/ssl/certs/nginx-selfsigned.crt ``` 此命令会提示输入有关组织的信息,在大多数情况下可以直接按回车键接受默认设置[^1]。 #### 修改Nginx配置文件支持HTTPS 使用文本编辑工具打开站点配置文件 `/etc/nginx/sites-available/default`: ```bash sudo nano /etc/nginx/sites-available/default ``` 在 `server` 块内添加如下内容以启用 HTTPS 监听端口以及指定之前生成的证书路径: ```nginx server { listen 443 ssl; server_name localhost; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /usr/share/nginx/html; index index.html index.htm; } } ``` 这段配置使得 Nginx 只允许较新的TLS协议版本,并设置了高强度加密算法列表来保障通信安全。 另外还需要保留原有的监听 HTTP 请求(`listen 80`)的服务块以便实现HTTP到HTTPS自动跳转功能: ```nginx server { listen 80; server_name localhost; return 301 https://$host$request_uri; } ``` 完成上述更改之后保存退出编辑器,并验证新配置的有效性: ```bash sudo nginx -t ``` 如果一切正常,则重启 Nginx 应用最新修改过的配置: ```bash sudo systemctl restart nginx ``` 此时访问 http://localhost 将被重定向至 https://localhost ,浏览器地址栏应显示锁形图标表示连接已经加密。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值