灌篮少年 发表于 2024-7-14 22:15:49

Nginx 配置 SSL(HTTPS)详解

Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通讯。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。
随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通讯的标配。Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通讯。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。
https://img-blog.csdnimg.cn/direct/35d4cb8db7be41f4b2344e1a7b37a566.png
利用Nginx进行反向代理的时候,对于正常的http;流量利用 location 块而且配置 proxy_pass 转发即可,但是假如是https的流量,利用Nginx进行反向代理的时候,直接利用 proxy_pass 会出现各种报错的情况,包括不限于:


[*]502 Bad Getway
[*]ERR_SSL_PROTOCOL_ERROR
[*]ERR_CONNECTION_RESET
   我本身碰到的ERR_SSL_PROTOCOL_ERROR错误比较多,这是由于在配置Nginx的时候,对于443端口本身的侦听没有带上 ssl 关键字,所以会报SSL协议错误,但是假如加上ssl,没有给证书位置,也是不可

对于转发到8080端口,假如配置不对(比如后端服务是http,结果配置了https),会出现502 Bad Getway


[*]proxy_pass后边的要写IP地址,不能写域名,否则还要解决域名解析的问题,有据称假如写localhost的,访问速度会变慢,是由于需要访问host文件解析localhost
[*]相应8080端口的server块,也要留意,也要写成侦听ssl,配置好证书位置
upstreamplan-uat {
      server 10.202.159.74:8080 max_fails=3 fail_timeout=10 weight=1;
}

server {
      server_name   plan-uat.ztoky.cn;
      listen 443 ssl ;
      ssl_certificate ssl/ztoky.cn.crt;
      ssl_certificate_key ssl/ztoky.cn.key;
      access_log logs/plan-uat.ztoky.cn.access.log json;

      location /plan/ {
         proxy_pass      http://plan-uat/;
         include         proxy.conf;
      }
} 检查 linux 服务器上的 nginx 是否安装 ssl 模块
nginx 安装目次,下面有个 sbin 文件夹,来到 sbin 目次下执行 ./nginx -V命令,留意是大写的 V,小写的 v 只会展示 nginx 的版本号信息。执行完出现下图圈红的这些信息说明 ssl 模块已经安装过了。可以忽略下文的 ssl 模块安装的相关内容,直接看 nginx 配置的内容。
cd /usr/local/nginx/sbin
./nginx -V 为 nginx 安装 ssl 模块
假如没有安装 ssl 模块,即使你成功的配置好 https 的相关配置,网站也依旧不能利用 https,会提示诸如:无法提供安全毗连、TLS协议不支持等问题。ssl 模块的安装是为了能让后端接口得以利用 https 的方式调用。找到我们的 nginx 安装解压包,我这里是放在 /usr/local/software 目次下,然后执行如下命令进入到 nginx-1.18.0 目次下。
cd /usr/local/nginx-1.18.0 来到 ngixn-1.18.0 目次 然后依次执行如下这命令,配置了 ssl 模块,利用 make 命令重新编译
./configure --with-http_ssl_module
make https://img-blog.csdnimg.cn/direct/a5f117f52a974675858e497a7d1a67d2.png
进入 objs 目次,会看到 nginx 的可执行文件
https://img-blog.csdnimg.cn/direct/69aeed71840e4ff0ad1b74e8e495d7ce.png
留意,不能利用 make install 命令,这样会导致重新安装 nginx,此时当前目次就会出现 objs 目次
更换 nginx 可执行文件,我们利用这个新的 nginx 可执行文件 更换 sbin 目次下的 nginx 可执行文件
cp ./nginx /usr/local/nginx/sbin/ 系统会询问你是否覆盖,输入 y 即可,假如覆盖失败,多半是由于你的 nginx 还在启动中,先将 nginx 关闭即可,再次查验是否安装 ssl 模块,进入 nginx 目次
cd /usr/local/nginx/sbin/ 执行命令
./nginx -V 此时就能看到 ssl 模块已经安装成功了
https://img-blog.csdnimg.cn/direct/1c1e6aa7757b414a80ecdbfded9e4fe3.png


 预备SSL证书

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


[*]证书文件(比方:example.com.crt)
[*]私钥文件(比方:example.com.key)
[*]中间证书文件(假如有的话)


配置Nginx SSL  启用443端口

(1) 打开Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。
(2) 在http块中,配置SSL相关参数。示比方下:
http {
    ...
   
    server {
      listen 443 ssl;
      server_name example.com;
      
      ssl_certificate /path/to/example.com.crt;# 证书文件路径
      ssl_certificate_key /path/to/example.com.key;# 私钥文件路径
      
      # 如果有中间证书,也需要配置
      ssl_trusted_certificate /path/to/intermediate.crt;
      
      # 其他SSL配置参数
      ssl_session_cache    shared:SSL:1m;
      ssl_session_timeout5m;
      ssl_protocols TLSv1.2 TLSv1.3;# 支持的协议版本
      ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;# 使用此加密套件
      ssl_prefer_server_ciphers on;# 优先使用服务器端的加密套件
      
      # 其他server配置...
    }
   
    ...
} 测试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;
server {

  # 监听443端口,处理所有HTTPS请求
  listen 443 ssl;

  server_name your.domain.com;

  # SSL配置
  ssl_certificate /path/to/your/cert.pem;
  ssl_certificate_key /path/to/your/private.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!MD5;

  # 代理配置,将HTTPS请求代理到另一个HTTPS服务器
  location / {
    proxy_pass https://your.backend.server;
  }
} 以上配置假设您的域名是your.domain.com,代理目标是您的后端HTTPS服务器(比方https://your.backend.server)。请记住将路径和参数适当地配置为您的特定场景。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Nginx 配置 SSL(HTTPS)详解