windows ngnix 配置https

本文介绍了如何将网站从http切换到https,包括通过OpenSSL生成ssl证书和在阿里云申请免费证书的步骤,以及如何配置nginx以支持https访问。同时,提供了两种不同的证书生成方法的优缺点和配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为客户需求,需要把原来的http换成https,还不能影像原来http的访问。

看了许多网上的资料,经过实践。我总结下相关步骤及怎么配置的。

第一步,把http换成https这里需要ssl证书

ssl证书生成,我接触的有2种免费方式。

第一种通过安装 OpenSSL(创建证书)。

优点:ssl证书生成简单

缺点:最后成功配置了该证书,http换成https。但是各浏览器是不承认该证书的,也会出现不安全的提示

示例:

对于我来说,太low了

第二种方式在阿里云上申请免费证书,有效期只有一年。各浏览器是承认该安全证书的。

萝卜蔬菜各有所爱。

如果你很懒,   OpenSSL创建的通用证书已经给你创建好了,直接下载使用

链接:  OpenSSL生成的ssl证书-WindowsServer文档类资源-优快云下载

第一种通过  OpenSSL(创建证书)。

下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

  1. 下载完成安装到 C:\OpenSSL-Win64

  2. 配置环境变量在这里插入图片描述

  3. 在path变量后需要加入 %OPENSSL_HOME%

在这里插入图片描述

4.生成证书

在你的nginx下创建ssl文件夹 用于存放证书

 打开服务器的cmd,进入到nginx下创建ssl文件夹下

运行证书生成命令:

openssl genrsa -des3 -out zs.key 2048

 创建安全秘钥,安全秘钥输自己能记得到的。

 再次输入自己刚才的秘钥。

创建 csr 证书

再次输入命令:

openssl req -new -key zs.key -out zs.csr

后面的内容按enter键跳过

这就创建完成了。这就是刚生成的证书

 第二种通过阿里云平台生成证书

申请证书地址:https://yundun.console.aliyun.com/?spm=5176.12818093.ProductAndResource--ali--widget-product-recent.dre3.3be916d02OjeeC&p=cas#/certExtend/free

登录上阿里云后跳转至证书申请页面

 

 后面会把相关的信息发到你的邮件里,根据邮件的步骤生成证书就可以了

我申请下来的证书,和openssl生成的证书有点差异,单不影响结果:

 证书已经生成了,现在就是nginx配置了

nginx配置(必须对外开通443端口,互联网可以访问该端口 )

如果有原http访问项目的相关配置了,先别去动它。再创建一个nginx配置,免得把以前的项目搞砸了,如果对ssl不是很懂的话。配置没有问题了再把原的nginx干掉。

nginx.conf配置(这个是有原nginx项目配置的环境下,重新建的一个nginx 取名nginxssl):

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
	#隐藏nginx版本
    server_tokens  off;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    #文件压缩
    gzip  on;
	gzip_disable "msie6";
	gzip_proxied any;
	gzip_min_length 1k;
	gzip_comp_level 4;
	gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;



    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
	
	
    # HTTPS server
    #
    server {
        listen       443 ssl;
		#填写你的域名或ip 多个用空格分开
        server_name  www.xxx.com 221.237.182.xxx;
        #证书路径配置 我这里用的阿里云申请的证书 D:/soft/nginxssl/ssl/zs.csr
        ssl_certificate      D:/soft/nginxssl/ssl/8935916.pem;
		#证书路径配置 我这里用的阿里云申请的证书 D:/soft/nginxssl/ssl/zs.key
        ssl_certificate_key  D:/soft/nginxssl/ssl/8935916.key;
    
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        client_max_body_size 20M;#控制该server的所有请求报文大小
		#后台接口访问配置
		location ^~ /api {
			proxy_pass	http://localhost:8080/api;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		#前端项目默认访问配置
		location / {
            root   D:/soft/webfile/dist-jeeplus-ssl;
            index  index.html index.htm;
			autoindex off;
			if (!-e $request_filename) {
				rewrite ^(.*)$ /index.html?s=$1 last;
				break;
			} 
        }
		#前端项目分流访问配置
        location /ph {
            alias   D:/soft/webfile/dist-phone-ssl;
            index  index.html index.htm;
			autoindex off; 
        }
    }

}

nginx.conf配置(没有原nginx项目配置的环境下):

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
	#隐藏nginx版本
    server_tokens  off;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    #文件压缩
    gzip  on;
	gzip_disable "msie6";
	gzip_proxied any;
	gzip_min_length 1k;
	gzip_comp_level 4;
	gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

	#HTTP配置
	server {
		listen 80;
		#填写绑定证书的域名
		server_name www.xxx.com;
		#(第一种)把http的域名请求转成https 保留一种
		return 301 https://$host$request_uri;
		#(第二种)强制将http的URL重写成https 保留一种
		rewrite ^(.*) https://$server_name$1 permanent; 
	}
	
    #HTTPS使用SSL访问的配置
    #
    server {
        listen       443 ssl;
		#填写你的域名或ip 多个用空格分开
        server_name  www.xxx.com 221.237.182.xxx;
        #证书路径配置 我这里用的阿里云申请的证书 D:/soft/nginxssl/ssl/zs.csr
        ssl_certificate      D:/soft/nginxssl/ssl/8935916.pem;
		#证书路径配置 我这里用的阿里云申请的证书 D:/soft/nginxssl/ssl/zs.key
        ssl_certificate_key  D:/soft/nginxssl/ssl/8935916.key;
    
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        client_max_body_size 20M;#控制该server的所有请求报文大小
		#后台接口访问配置
		location ^~ /api {
			proxy_pass	http://localhost:8080/api;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		#前端项目默认访问配置
		location / {
            root   D:/soft/webfile/dist-jeeplus-ssl;
            index  index.html index.htm;
			autoindex off;
			if (!-e $request_filename) {
				rewrite ^(.*)$ /index.html?s=$1 last;
				break;
			} 
        }
		#前端项目分流访问配置
        location /ph {
            alias   D:/soft/webfile/dist-phone-ssl;
            index  index.html index.htm;
			autoindex off; 
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ctrl+C+V程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值