nigix http转https

网站http转https

ssl证书

域名证书有分单域名证书和泛域名证书

单域名:a.xxx.com b.xxx.com 这里就需要两个单域名证书去认证

泛域名:*.xxx.com 只要是xxx.com的域名都可以用同一个泛域名证书去认证

生成证书

方法一:购买,可以向各大云服务商购买

方法二:自建(openssl和certboot,网上教程很多,这里就不做说明)

openssl:(使用openssl自建ssl证书),网站依旧有不安全提示

certboot获取免费证书

nginx配置

server {
            listen 443;
            ssl on;
            server_name a.xxx.com;
            ssl_certificate xxx-server.crt;
            ssl_certificate_key xxx-server.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;
            ssl_prefer_server_ciphers on;
    		// 以下是压缩配置 可选
    		gzip on;
            gzip_http_version 1.1;
            gzip_comp_level 3;
            gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;
    
            location / {
              proxy_pass http://ip:port;
              proxy_redirect off;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_read_timeout 600;
            }
        }

如果需要自动将http转成https,则添加以下配置

server {
        listen 80;
        server_name a.xxx.com;
        rewrite ^(.*) https://a.xxx.com;
    }

ws转wss,如果有使用websocket的话,也需要将ws转成wss,如果使用泛域名证书,则可以使用同一个证书认证,否则需要用不同的证书认证,单域名证书ws认证nginx配置也是和上面更换域名和对于proxy_pass对应的内容,剩余的一致即可。

你可能感兴趣的:(linux,nginx)