Nginx配置一个域名多端口+HTPPS协议

摘要

食用须知:本文档详细配置了关于Nginx的HTTPS的配置,是在一台服务器上监听多个端口,并且只有一个域名的情况下,配置多个端口号采用HTTPS的方式发送请求。

说明

我们先来说说HTTP和HTTPS的区别

HTTP(超文本传输协议)和HTTPS(安全HTTP)是用于在客户端和服务器之间传输数据的两种不同协议。它们之间的主要区别在于安全性。有以下几点区别。

  1. 安全性:HTTP是明文协议,数据在传输过程中是以明文形式发送的,容易被窃听和篡改。而HTTPS通过使用TLS(传输层安全)协议对通信进行加密,确保数据传输的机密性和完整性。HTTPS使用公钥加密和私钥解密的方式,使得数据在传输过程中更加安全。

  2. 数据传输方式:HTTP使用默认端口80进行通信,而HTTPS使用默认端口443。HTTP的数据传输速度通常比HTTPS快一些,因为HTTPS需要进行加密和解密的过程,会增加一定的计算负担和传输延迟。

  3. 证书要求:为了在网站上使用HTTPS,需要获取并安装SSL/TLS证书。这个证书是由经过合法认证的证书颁发机构(CA)签发的,用于验证服务器身份的数字凭证。而HTTP不需要使用证书。

  4. SEO(搜索引擎优化):搜索引擎通常更喜欢安全的HTTPS网站,在搜索结果中更有可能获得更好的排名。因此,使用HTTPS可以提高网站的可见性和信誉度。

到此我们就明白了为什么要采用HTTPS的协议来发送请求,因为它相对更安全。安全肯定是首位

上述提到了SSL/TLS证书,需要相关人去申请,我们只需要拿到申请的证书做事就可以啦 。

添加ssl证书

当我们拿到ssl证书的时候,我们可以去到nginx的目录下新建一个文件夹cert(mkdir cert),把相关的证书上传到这个文件夹,一般是两个,一个是.key文件,一个是.pem文件。

配置nginx.conf

1.通过命令找到nginx的位置

whereis nginx

2.切换到/nginx/conf目录

 3.配置nginx采用HTTPS协议

如果你需要监听443端口,可以按照如下配置,添加的server配置是在http{}下。

server {
        listen       443 ssl;#必须加上ssl
        server_name  xxx.com.cn; #可以是域名,可以是ip
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        root      /var/www/html/test/web;  # nginx的访问目录
        index     index.html index.htm; #首选文件

        #设置文件上传大小
        client_max_body_size 100m;
         
        #配置ssl协议
        ssl_certificate /usr/local/nginx/cert/xxx.pem; #ssl证书路径
        ssl_certificate_key /usr/local/nginx/cert/xxx.key; #ssl证书路径
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

       location / {
            try_files $uri $uri/ /index.php$is_args$args; #配置伪静态
            #proxy_pass        http://127.0.0.1:8082;#动态转发
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www/html/test/web;
        }

    }

如果你要配置这个域名多个端口的监听也是采用https协议,也是按照上述配置复制一份在它下方,更改端口号就可以。亲测有效。例如:我监听8081 8082

server {
        listen       8081 ssl;
        server_name  xxx.com.cn;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        root      /var/www/html/test/web;
        index     index.html index.htm;

        #设置文件上传大小
        client_max_body_size 100m;

        ssl_certificate /usr/local/nginx/cert/xxx.pem;
        ssl_certificate_key /usr/local/nginx/cert/xxx.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

       location / {
            try_files $uri $uri/ /index.php$is_args$args;
            #proxy_pass        http://127.0.0.1:8082;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www/html/test/web;
        }

    }
    server {
        listen       8082 ssl;
        server_name  xxx.com.cn;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        root      /var/www/html/test/web;
        index     index.html index.htm;

        #设置文件上传大小
        client_max_body_size 100m;
         
        ssl_certificate /usr/local/nginx/cert/xxx.pem;
        ssl_certificate_key /usr/local/nginx/cert/xxx.key;

        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

       location / {
            try_files $uri $uri/ /index.php$is_args$args;
            #proxy_pass        http://127.0.0.1:8082;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www/html/test/web;
        }

    }

猜你喜欢

转载自blog.csdn.net/m0_52985087/article/details/132313975
今日推荐