windows ngnix 配置https

news2025/1/12 12:23:18

因为客户需求,需要把原来的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; 
        }
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kettle的安装以及简单使用

Kettle是一款开源免费的ETL工具,ETL全称 Extract - Transform - Load 意味着数据抽取,转换,装载的过程。 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到…

二叉树19:最大二叉树

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:654. 最大二叉树 题目: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地…

【ElementUI】一.axios拦截器;二.ElementUI

目录 一.axios拦截器 1.axios模块的作用:是对基于http请求的封装。在浏览器端对异步请求对象XMLHttpRequest进行封装 2.拦截器: (1)请求拦截器:对客户端发起的请求进行统一的前期处理(token、时间戳、co…

分支与循环语句 - 练习题

目录 一、分支语句 1. 判断一个数是否为奇数 2. 输出1-100之间的奇数 法1:遍历1-100所有的数字,判断是否为奇数,再输出 法2:奇数从1开始,等差为2,所以循环2 二、循环语句 1. 计算 n的阶乘。 2. 计算…

ArcGIS基础实验操作100例--实验84查找面到直线的最近点位置

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验84 查找面到直线的最近点位置 目录 一、实验背景 二、实验数据 三、实验步骤 &#…

Acwing---1015.摘花生

摘花生1.题目2.基本思想3.代码实现1.题目 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经…

Hudi集成Spark(二)Spark SQL方式

文章目录环境准备创建表插入数据查询数据更新数据删除数据覆盖数据修改表结构(Alter Table)修改分区存储过程(Procedures)Catalog:可以和Spark或者Flink中做一个共享,共享之后,计算引擎才可以去…

跨域与Nginx总结

跨源资源共享(CORS)是一种机制,他使浏览器可以访问由其他域提供的Web资源。通常,浏览器会使用同源策略来限制从脚本中发出的HTTP请求。例如,如果一个网站的资源位于https://haha.com,那么它就不能发出对htt…

使用ResNet50实现CIFAR10数据集的训练

如果对你有用的话,希望能够点赞支持一下,这样我就能有更多的动力更新更多的学习笔记了。😄😄 使用ResNet进行CIFAR-10数据集进行测试,这里使用的是将CIFAR-10数据集的分辨率扩大到32X32,因为算力相关的…

C语言常用内存函数的深度解析

文章目录前言memcpymemcpy函数的使用memcpy函数的自我实现memmovememmove函数的使用memmove函数的自我实现memcmpmemcmp函数的使用memcmp函数的自我实现memsetmemset函数的使用memset函数的自我实现写在最后前言 内存函数的使用广泛度大于常用字符串函数的使用广泛度&#xff0…

教程- VTK.js的基本介绍

VTK.js的核心是标准可视化工具包(VTK)库的JavaScript移植,这是一个c库,旨在促进数据可视化,在此基础上构建了科学可视化应用程序Paraview。VTK.js没有使用OpenGL,而是利用WebGL,主要关注几何和体渲染。因此&#xff0c…

JavaFx程序使用Gloun打包成Android平台App教程

0. 提要 !!! 适合有Maven基础,对JavaFx或JavaFX移动端感兴趣的朋友 提示必须在Linux环境下进行,可以使用虚拟机 推荐使用CentOS系统进行,虚拟机硬盘大小推荐最少给30G 不要像我一样,搞一半又去给文件系统根目录扩大容量 如果容量不够可以看篇博客: http…

C++模板(第二版)笔记之第十八章:模板的多态性

文章目录一、动态多态(dynamic polymorphism)二、静态多态三、静态多态VS动态多态1.术语2.优点和缺点3.结合两种多态形式:CRTP四、使用concepts五、新形势的设计模式六、泛型编程七、总结一、动态多态(dynamic polymorphism&#…

【C语言】内存函数介绍

它们所在的头文件: (这里出现的arr都为char类型数组)strlen作用:计算一个字符串的长度本质:历经千辛找一个 \0 ,找到 \0 就立马停止。(就是找 \0 )易错:strlen 返回值为 …

物联网无线通信技术中蓝牙和WIFI有哪些区别?

在物联网快速发展的时代,联网运行的设备越来越多,无线通信技术在物联网中发挥着举足轻重的作用,无线通信技术的发展改变了信息传输的方式,人们在任何时间、任何地点都可以访问设备,目前最常用的两种无线通信技术分别是…

云服务器CentOS前后端部署流程记录

部署流程记录 购买云服务ecs服务器,建立CentOS系统 通过xftpxshell访问远程服务 doker部署(https://www.runoob.com/docker/centos-docker-install.html) docker docker部署环境(mysql) docker常用命令 1. docker i…

【Linux】进程状态与优先级

文章目录进程状态概念Linux中的进程状态R(running)状态S(sleeping)状态D(disk sleep)状态T(stopped)状态t(tracing stop)状态X(dead)状态Z(zombie)状态特殊的孤儿进程进程优先级进程性质补充进程状态概念 《现代操作系统》中给出的进程状态的定义如下: 进程状态反映…

Qt+C++窗体界面中英文多语言切换

程序示例精选 QtC窗体界面中英文语言切换 如需安装运行环境或远程调试&#xff0c;见文章底部个人微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC窗体界面中英文语言切换>>编写代码&#xff0c;代码整洁&#xff0c;规则&#x…

【Linux】软件包管理器 yum

目录 一、什么是软件包 二、如何进行软件安装 1、yum 的使用 2、yum 配置 一、什么是软件包 在Linux下安装软件&#xff0c;一个通常的办法是下载到程序的源代码&#xff0c;并进行编译&#xff0c;得到可执行程序。但是这样太麻烦了&#xff0c;于是有些人把一些常用的软…

InnoDB数据存储结构

InnoDB数据存储结构 本专栏学习内容来自尚硅谷宋红康老师的视频 有兴趣的小伙伴可以点击视频地址观看 1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切来说是存储在页结构中。…