当前位置:   article > 正文

nginx部署http和https配置,https转发http

nginx部署http和https配置,https转发http

在阿里云购买了域名后,可以免费申请SSL证书,该证书是绑定域名的

阿里云申请免费SSL证书,下载后 解压后有2个文件 xxx.key , xxx.pem

nginx/conf 目录下新建 cert,将上面2个文件放入cert ,vi 打开 配置文件

注意:云服务器开启 80 和 443 端口权限,默认是关闭的

下面的server_name 内容的 yourdomain.com 替换你的 域名
下面的xxx替换你自己的内容

注意:配置https时 server_name 一定要设置证书绑定的域名,访问https时用域名去访问,不要用ip地址直接访问,否则https无效

https默认端口(443)配置

https默认端口 即访问https时不写端口默认访问443

注意:云服务器安全组开放443端口权限

    # HTTPS server
    server {
        listen 443 ssl;
        #配置HTTPS的默认访问端口为443。
        #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
        #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
        server_name *.yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
        root /opt/www_80/xxx;
#       index index.html index.htm;
        ssl_certificate cert/xxx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key cert/xxx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型
        ssl_prefer_server_ciphers on;
        location / {
#               root   html;
                index index.html index.htm;
         }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

http默认端口(80) 重定向 https默认端口(443)

注意:云服务器安全组开放443和80端口权限

    server {
        listen       80;
        server_name  *.yourdomain.com;

        rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

https端口 转发给内部http端口

注意:云服务器安全组开放18080 和 8082端口权限

    #HTTPS server
    server {
        listen 18080 ssl;
        server_name *.yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。

        ssl_certificate cert/xxx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key cert/xxx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型
        ssl_prefer_server_ciphers on;
        location / {
            # 转发到 http 服务器中
            proxy_pass http://localhost:8082;
            #proxy_redirect http:// https://;
            #add_header         Cache-Control    no-store;
            #proxy_set_header   Host             $host;
            #proxy_set_header   X-Real-IP        $remote_addr;
            #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

注意:访问时一定要用域名+端口访问,因为证书是绑定了域名的,如果不用域名而是直接用ip当我这个端口,会报安全异常警告的,说白了就是没用上证书,如下:
在这里插入图片描述

上面这个配置重启nginx后,浏览器访问 https://www.yourdomain.com:18080/test 会转发给域名地址内部的http 8080端口
在这里插入图片描述

仅仅http

注意:云服务器安全组开放80端口权限

    server {
        listen       80;
        server_name  *.yourdomain.com;
        root         /opt/www_80/xxx;
        location / {
            index  index.html index.htm;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/224661
推荐阅读
相关标签
  

闽ICP备14008679号