网站 备案 哪个省,百度免费推广平台,网站开发语言 微信接口,广州专业网络推广公司Nginx作为一款高性能的HTTP和反向代理服务器#xff0c;自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL#xff0c;实现HTTPS的访问。
随着互联网安全性的日益重要#xff0c;HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…Nginx作为一款高性能的HTTP和反向代理服务器自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL实现HTTPS的访问。
随着互联网安全性的日益重要HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务器自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL实现HTTPS的访问。 使用Nginx进行反向代理的时候对于正常的http流量使用 location 块并且配置 proxy_pass 转发即可但是如果是https的流量使用Nginx进行反向代理的时候直接使用 proxy_pass 会出现各种报错的情况包括不限于
502 Bad GetwayERR_SSL_PROTOCOL_ERRORERR_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配置好证书位置 upstream plan-uat { server 10.202.159.74:8080 max_fails3 fail_timeout10 weight1; } 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进入 objs 目录会看到 nginx 的可执行文件 注意不能使用 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 模块已经安装成功了 准备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_timeout 5m;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。请记住将路径和参数适当地配置为您的特定场景。