ToB企服应用市场:ToB评测及商务社交产业平台

标题: Nginx 配置 SSL(HTTPS)详解 [打印本页]

作者: 灌篮少年    时间: 2024-7-14 22:15
标题: Nginx 配置 SSL(HTTPS)详解
Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通讯。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。
随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通讯的标配。Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通讯。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。

利用Nginx进行反向代理的时候,对于正常的http;流量利用 location 块而且配置 proxy_pass 转发即可,但是假如是https的流量,利用Nginx进行反向代理的时候,直接利用 proxy_pass 会出现各种报错的情况,包括不限于:

   我本身碰到的ERR_SSL_PROTOCOL_ERROR错误比较多,这是由于在配置Nginx的时候,对于443端口本身的侦听没有带上 ssl 关键字,所以会报SSL协议错误,但是假如加上ssl,没有给证书位置,也是不可
  
  对于转发到8080端口,假如配置不对(比如后端服务是http,结果配置了https),会出现502 Bad Getway
  
  1. upstream  plan-uat {
  2.         server 10.202.159.74:8080 max_fails=3 fail_timeout=10 weight=1;
  3. }
  4. server {
  5.         server_name   plan-uat.ztoky.cn;
  6.         listen 443 ssl ;
  7.         ssl_certificate ssl/ztoky.cn.crt;
  8.         ssl_certificate_key ssl/ztoky.cn.key;
  9.         access_log logs/plan-uat.ztoky.cn.access.log json;
  10.         location /plan/ {
  11.            proxy_pass      http://plan-uat/;
  12.            include         proxy.conf;
  13.         }
  14. }
复制代码
检查 linux 服务器上的 nginx 是否安装 ssl 模块
nginx 安装目次,下面有个 sbin 文件夹,来到 sbin 目次下执行 ./nginx -V命令,留意是大写的 V,小写的 v 只会展示 nginx 的版本号信息。执行完出现下图圈红的这些信息说明 ssl 模块已经安装过了。可以忽略下文的 ssl 模块安装的相关内容,直接看 nginx 配置的内容。
  1. cd /usr/local/nginx/sbin
  2. ./nginx -V
复制代码
为 nginx 安装 ssl 模块
假如没有安装 ssl 模块,即使你成功的配置好 https 的相关配置,网站也依旧不能利用 https,会提示诸如:无法提供安全毗连、TLS协议不支持等问题。ssl 模块的安装是为了能让后端接口得以利用 https 的方式调用。找到我们的 nginx 安装解压包,我这里是放在 /usr/local/software 目次下,然后执行如下命令进入到 nginx-1.18.0 目次下。
  1. cd /usr/local/nginx-1.18.0
复制代码
来到 ngixn-1.18.0 目次 然后依次执行如下这命令,配置了 ssl 模块,利用 make 命令重新编译
  1. ./configure --with-http_ssl_module
  2. make
复制代码

进入 objs 目次,会看到 nginx 的可执行文件

留意,不能利用 make install 命令,这样会导致重新安装 nginx,此时当前目次就会出现 objs 目次
更换 nginx 可执行文件,我们利用这个新的 nginx 可执行文件 更换 sbin 目次下的 nginx 可执行文件
  1. cp ./nginx /usr/local/nginx/sbin/
复制代码
系统会询问你是否覆盖,输入 y 即可,假如覆盖失败,多半是由于你的 nginx 还在启动中,先将 nginx 关闭即可,再次查验是否安装 ssl 模块,进入 nginx 目次
  1. cd /usr/local/nginx/sbin/
复制代码
执行命令
  1. ./nginx -V
复制代码
此时就能看到 ssl 模块已经安装成功了



 预备SSL证书


起首,我们需要预备SSL证书。你可以选择从证书颁发机构(CA)购买贸易证书,也可以自己生成自署名证书。自署名证书虽然免费,但不会被浏览器信任,仅适用于测试情况。
假如你选择购买贸易证书,通常会得到以下文件:



配置Nginx SSL  启用443端口


(1) 打开Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。
(2) 在http块中,配置SSL相关参数。示比方下:
  1. http {
  2.     ...
  3.    
  4.     server {
  5.         listen 443 ssl;
  6.         server_name example.com;
  7.         
  8.         ssl_certificate /path/to/example.com.crt;  # 证书文件路径
  9.         ssl_certificate_key /path/to/example.com.key;  # 私钥文件路径
  10.         
  11.         # 如果有中间证书,也需要配置
  12.         ssl_trusted_certificate /path/to/intermediate.crt;
  13.         
  14.         # 其他SSL配置参数
  15.         ssl_session_cache    shared:SSL:1m;
  16.         ssl_session_timeout  5m;
  17.         ssl_protocols TLSv1.2 TLSv1.3;  # 支持的协议版本
  18.         ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;  # 使用此加密套件
  19.         ssl_prefer_server_ciphers on;  # 优先使用服务器端的加密套件
  20.         
  21.         # 其他server配置...
  22.     }
  23.    
  24.     ...
  25. }
复制代码
测试HTTPS访问

现在,你的Nginx服务器已经配置了SSL,可以通过HTTPS协议访问了。在浏览器中输入https://example.com,检查是否能够成功访问并显示安全的毗连标识(如绿色锁头)。
此外,你还可以利用命令行工具(如openssl或curl)来测试HTTPS毗连和证书的有效性。



配置代理


利用proxy_pass指令来配置代理。以下是一个示例配置,将HTTPS请求代理到另一个HTTPS服务器:(留意这里的后端是HTTPS的服务)
   后端服务是https范例的  proxy_pass https://your.backend.server;
  后端服务是http范例的    proxy_pass http://your.backend.server;
  1. server {
  2.   # 监听443端口,处理所有HTTPS请求
  3.   listen 443 ssl;
  4.   server_name your.domain.com;
  5.   # SSL配置
  6.   ssl_certificate /path/to/your/cert.pem;
  7.   ssl_certificate_key /path/to/your/private.key;
  8.   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  9.   ssl_ciphers HIGH:!aNULL:!MD5;
  10.   # 代理配置,将HTTPS请求代理到另一个HTTPS服务器
  11.   location / {
  12.     proxy_pass https://your.backend.server;
  13.   }
  14. }
复制代码
以上配置假设您的域名是your.domain.com,代理目标是您的后端HTTPS服务器(比方https://your.backend.server)。请记住将路径和参数适当地配置为您的特定场景。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4