nginx 80 映射web服务,并安装使用https ssl证书

Posted 辉常努腻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 80 映射web服务,并安装使用https ssl证书相关的知识,希望对你有一定的参考价值。

本文档指导您如何在 nginx 服务器中安装 SSL 证书。

nginx version: nginx/1.18.0
SSL TrustAsia TLS RSA CA RSA 2048

  • 本文档以证书名称 cloud.tencent.com 为例。
  • Nginx 版本以 nginx/1.18.0 为例。
  • 当前服务器的操作系统为 CentOS 7,由于操作系统的版本不同,详细操作步骤略有区别。
  • 安装 SSL 证书前,请您在 Nginx 服务器上开启 “443” 端口,避免证书安装后无法启用 HTTPS。具体可参考 服务器如何开启443端口?
  • SSL 证书文件上传至服务器方法可参考 如何将本地文件拷贝到云服务器

前提条件

  • 已准备文件远程拷贝软件,例如 WinSCP(建议从官方网站获取最新版本)。
  • 已准备远程登录工具,例如 PuTTY 或者 Xshell(建议从官方网站获取最新版本)。
  • 已在当前服务器中安装配置 Nginx 服务。
  • 安装 SSL 证书前需准备的数据如下:
    名称说明
    服务器的 IP 地址服务器的 IP 地址,用于 PC 连接到服务器。
    用户名登录服务器的用户名。
    密码 登录服务器的密码。

操作步骤

证书安装

  • 请在 SSL 证书管理控制台 中选择您需要安装的证书并单击下载
  • 在弹出的 “证书下载” 窗口中,服务器类型选择 Nginx,单击下载并解压缩 cloud.tencent.com 证书文件包到本地目录。
    解压缩后,可获得相关类型的证书文件。其中包含 cloud.tencent.com_nginx 文件夹:
    • 文件夹名称cloud.tencent.com_nginx
    • 文件夹内容
      • cloud.tencent.com_bundle.crt 证书文件
      • cloud.tencent.com_bundle.pem 证书文件(可忽略该文件)
      • cloud.tencent.com.key 私钥文件
      • cloud.tencent.com.csr CSR 文件

说明:

CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件.

  • 使用 “WinSCP”(即本地与远程计算机间的复制文件工具)登录 Nginx 服务器。
  • 将已获取到的 cloud.tencent.com_bundle.crt 证书文件和 cloud.tencent.com.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /usr/local/nginx/conf 目录(此处为 Nginx 默认安装目录,请根据实际情况操作)下。
  • 远程登录 Nginx 服务器。例如,使用 “PuTTY” 工具 登录。
  • 编辑 Nginx 根目录下的 conf/nginx.conf 文件。修改内容如下:
    • 此操作可通过执行 vim /usr/local/nginx/conf/nginx.conf 命令行编辑该文件。
    • 由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443ssl on
    server 
            listen       443 ssl;
    	#填写绑定证书的域名
            server_name  ***.com;
    
    	#证书文件名称
            ssl_certificate      ***.com_bundle.pem;
    	#私钥文件名称
            ssl_certificate_key  ***.com.key;
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
    	#请按照以下协议配置
    	ssl_protocols TLSv1.2 TLSv1.3;
            #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    	#ssl_ciphers  HIGH:!aNULL:!MD5;
    
            ssl_prefer_server_ciphers  on;
    
            location / 
                root   html;
    	    proxy_pass http://localhost:***;
    	    #限流可以不加
    	    limit_req zone=myRateLimit;
                index  index.html index.htm;
        
    
    

    在 Nginx 根目录下,通过执行以下命令验证配置文件问题。

    nginx -t
    
    若存在,请您重新配置或者根据提示修改存在问题。
    若不存在,请执行 以下步骤。
    

    重启 Nginx,即可使用 https://***.com 进行访问。

    HTTP 自动跳转 HTTPS 的安全配置(可选)

    如果您需要将 HTTP 请求自动重定向到 HTTPS。您可以通过以下操作设置:

    根据实际需求,选择以下配置方式:

    • 在页面中添加 JS 脚本。
    • 在后端程序中添加重定向。
    • 通过 Web 服务器实现跳转。
    • Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加 return 301 https:// h o s t host hostrequest_uri;,即可将默认80端口的请求重定向为 HTTPS。修改如下内容:

    说明: 未添加注释的配置语句,您按照下述配置即可。 由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为
    nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。

     server 
         listen       80;
    
    #填写绑定证书的域名
          server_name ***.com; 
    
          error_page   500 502 503 504  /50x.html;
          location = /50x.html 
              root   html;
          
    
    #把http的域名请求转成https
          return 301 https://$host$request_uri;
      
     # HTTPS server
      #
      server 
          listen       443 ssl;
    #填写绑定证书的域名
          server_name  liyahui.xyz;
    
    #证书文件名称
          ssl_certificate      liyahui.xyz_bundle.pem;
    #私钥文件名称
          ssl_certificate_key  liyahui.xyz.key;
          ssl_session_cache    shared:SSL:1m;
          ssl_session_timeout  5m;
    
    	#请按照以下协议配置
    	ssl_protocols TLSv1.2 TLSv1.3;
    	      #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    	#ssl_ciphers  HIGH:!aNULL:!MD5;
    
          ssl_prefer_server_ciphers  on;
    
          location / 
              root   html;
    		   proxy_pass http://localhost:***;
    			#限流操作
    		   limit_req zone=myRateLimit;
              index  index.html index.htm;
          
      
    
    
  • 若修改完成,重启 Nginx。即可使用 http://cloud.tencent.com 进行访问。

  • 我的总体配置文件,敏感字符以脱敏[***]

    
    worker_processes  1;
    
    events 
        worker_connections  1024;
    
    
    http 
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    	
        #限流机制
        limit_req_zone $binary_remote_addr zone=myRateLimit:10m rate=1r/s;
        
        server 
            listen       80;
    
    	#填写绑定证书的域名
            server_name ***;
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html 
                root   html;
            
    	#把http的域名请求转成https
            return 301 https://$host$request_uri;
        
    
        #图床搭建映射
        server 
    
    	listen       8000;
            server_name  localhost2;
    
    	 location ~ .*\\.(gif|jpg|jpeg|png|jfif)$ 
                 root         /my/imgs/;
                 autoindex    on;
                 #配置限流
    	     limit_req zone=myRateLimit;
    	 
        
    
        # HTTPS server
        #
        server 
            listen       443 ssl;
    	#填写绑定证书的域名
            server_name  ***;
    
    	#证书文件名称
            ssl_certificate      ***_bundle.pem;
    	#私钥文件名称
            ssl_certificate_key  ***.key;
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
    	#请按照以下协议配置
    	ssl_protocols TLSv1.2 TLSv1.3;
            #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    	#ssl_ciphers  HIGH:!aNULL:!MD5;
    
            ssl_prefer_server_ciphers  on;
    
            location / 
                root   html;
    	    proxy_pass http://localhost:***;
    	    #配置限流
    	    limit_req zone=myRateLimit;
                index  index.html index.htm;
            
        
    
    
    

以上是关于nginx 80 映射web服务,并安装使用https ssl证书的主要内容,如果未能解决你的问题,请参考以下文章

NginxNginx 常用的基础配置

docker安装nginx

docker系列使用docker安装nginx提供web服务

Linux下JAVA WEB服务器的搭建三(NGINX)

Linux下JAVA WEB服务器的搭建三(NGINX)

搭建Nginx反向代理做内网域名转发