windows ngnix 配置https

3 篇文章 1 订阅
3 篇文章 0 订阅

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

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

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

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

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

优点:ssl证书生成简单

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

示例:

对于我来说,太low了

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

萝卜蔬菜各有所爱。

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

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

第一种通过  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; 
        }
    }

}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows系统下使用Nginx配置HTTPS服务器,需要完成以下步骤: 1. 下载Nginx:首先,你需要下载并安装最新版的Nginx。你可以从Nginx官方网站(https://nginx.org/)下载Windows版本的安装包,选择适合你系统的稳定版本。 2. 生成SSL证书:为了启用HTTPS,你需要生成SSL证书。可以使用免费的证书颁发机构(如Let's Encrypt)或自己创建自签名证书。这里以使用自签名证书为例。 a. 安装OpenSSL:从OpenSSL官方网站(https://www.openssl.org/)下载Windows版本的安装包,安装到你的系统中。 b. 生成私钥:打开命令提示符,进入到OpenSSL安装目录的bin目录下,执行以下命令生成私钥: ``` openssl genrsa -out private.key 2048 ``` c. 生成证书请求:继续在命令提示符中执行以下命令生成证书请求: ``` openssl req -new -key private.key -out certificate.csr ``` d. 签发证书:使用以下命令自签名证书: ``` openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt ``` 3. 配置Nginx:找到Nginx的安装目录,在conf文件夹下找到nginx.conf文件,并打开进行编辑。 a. 配置HTTP服务器:在http块中配置HTTP服务器,监听80端口。示例配置如下: ``` server { listen 80; server_name yourdomain.com; # 修改为你的域名 location / { root html; index index.html index.htm; } } ``` b. 配置HTTPS服务器:在http块中配置HTTPS服务器,监听443端口,并指定SSL证书和私钥的路径。示例配置如下: ``` server { listen 443 ssl; server_name yourdomain.com; # 修改为你的域名 ssl_certificate path/to/your/certificate.crt; # 修改为证书的路径 ssl_certificate_key path/to/your/private.key; # 修改为私钥的路径 location / { root html; index index.html index.htm; } } ``` 4. 启动Nginx:保存修改后的nginx.conf文件,并在命令提示符中进入Nginx的安装目录,执行以下命令启动Nginx: ``` nginx.exe ``` 5. 测试访问:打开浏览器,访问https://yourdomain.com(将yourdomain.com替换为你的域名),如果一切配置正确,你应该能够成功访问到HTTPS服务器。 这样,你就成功地在Windows系统下使用Nginx配置HTTPS服务器。注意,在生产环境中,建议使用有效的SSL证书来确保数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ctrl+C+V程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值