当前位置:首页 > 技术文章 > 正文内容

记Nginx开启网站Https

arlanguage5个月前 (12-09)技术文章35

一、前言

loang loang ago,在前后端分离之后,这个项目一直都是采用的http,并且有打算说是配置Https。拖了那么久终于在前阵子完成了,在这里做一个简要的记录。

二、SSL证书

2.1、什么是SSL证书

开启Https是数字证书的一种,由受信任的数字证书机构颁发。在服务器配置了SSL之后其访问具有身份验证和数据传输加密功能。

2.2、SSL证书如何获取

SSL证书的获取有诸多途径,我这里是用过腾讯云免费申请的SSl证书。

附上相关信息:

申请链接


2.3、申请到后如何使用

证书文件有以下几种(以我申请的为例):

以Nginx为例,配置Https分别需要文件夹中的以下文件:

三、Nginx

3.1、什么是Nginx

借用网络上的一段话:

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。
其特点是占有内存少,
并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好


3.2、下载Nginx

在Nginx官网可以下载到你所需要的版本,然后解压到服务器上(Linux使用命令处理)

3.3、配置Nginx

Nginx的主要配置集中在他的Config文件,下面附上我的相关配置,每一行都有其作用的说明:


########### 每个指令必须有分号结束。#################

# 配置用户或者组,默认为nobody nobody。
#user  nobody;

# 允许生成的进程数,设置值和cpu核心数一样(默认1)
worker_processes  2;

# 错误日志相关,
# 制定日志路径,级别。这个设置可以放入全局块,http块,server块,
# 级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定nginx进程运行文件存放地址
#pid        logs/nginx.pid;


events {
	# 最大连接数,默认为512
    worker_connections  1024;
}


http {
	# 文件扩展名与文件类型映射表
    include       mime.types;
	
	# 默认文件类型,默认为text/plain
    default_type  application/octet-stream;

	# access_log off; #取消服务日志 
	
	# 自定义格式
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

	# combined为日志格式的默认值
    #access_log  logs/access.log  main;

	# 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile        on;

	
    # 连接超时时间,默认为75s,可以在http,server,location块。
    keepalive_timeout  65;
	
	# 开启缓存配置
	# proxy_cache_path 缓存文件路径
	# levels 设置缓存文件目录层次;levels=1:2 表示两级目录
	# keys_zone 设置缓存名字和共享内存大小
	# inactive 在指定时间内没人访问则被删除
	# max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
	proxy_cache_path  /XA/nginx/cache levels=1:2 keys_zone=xaCache:20m max_size=50g inactive=1d;
	
	# 开启gzip
    gzip on;

    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 1k;

    # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
    gzip_comp_level 6;

    # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;

    # 是否在http header中添加Vary: Accept-Encoding,建议开启
    gzip_vary on;

    # 禁用IE 6 gzip
    gzip_disable "MSIE [1-6]\.";

    # 设置压缩所需要的缓冲区大小     
    gzip_buffers 4 16k;

    # 设置gzip压缩针对的HTTP协议版本
    gzip_http_version 1.0;

    server {
		# 监听端口
        listen 80;
		
		# 监听地址
        server_name guangmuhua.com;
		
		# 重定向
		return 301 https://$server_name$request_uri;
		
        location / {
		
			# 允许cros跨域访问
			add_header 'Access-Control-Allow-Origin' *;
			
			# 代理转发
            proxy_pass http://guangmuhua.com:8080;
						
        }
	    # 匹配以/api/开头的请求。正则匹配,~为区分大小写,~*为不区分大小写。
	    location /api {	
		
			# 允许cros跨域访问
			add_header 'Access-Control-Allow-Origin' *;
			
			# 代理转发
			proxy_pass https://guangmuhua.com:9001;
						
	    }
		
		# 缓存静态资源文件
		location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
			log_not_found off;
			# 关闭日志
			access_log off;
			# 缓存时间7天
			expires 7d;
			# 源服务器
			proxy_pass http://guangmuhua.com:8080;
			# 指定上面设置的缓存区域
			proxy_cache xaCache;
			# 缓存过期管理
			proxy_cache_valid 200 302 1d;
			proxy_cache_valid 404 10m;
			proxy_cache_valid any 1h;
			proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
		}
	}    

    # HTTPS server    
    server {
	
		# 监听端口,开启HTTP2
        listen       443 ssl http2;
		
		# 监听地址
        server_name  guangmuhua.com;

		# SSL正式和秘钥
        ssl_certificate      guangmuhua.crt;
        ssl_certificate_key  guangmuhua.key;

		# 储存session参数的缓存大小及过期时间
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

		# SSL加密套件
        ssl_ciphers  HIGH:!aNULL:!MD5;
		
		# 是否由服务器决定采用哪种加密算法
        ssl_prefer_server_ciphers  on;
		
		location / {
		
			# 允许cros跨域访问	
	       	add_header 'Access-Control-Allow-Origin' *;
			
			# 代理转发
	       	proxy_pass http://guangmuhua.com:8080;
			
        }
		
		# 匹配以/api开头的请求 
		location /api {
			
			# 允许cros跨域访问
			add_header 'Access-Control-Allow-Origin' *;
			
			# 代理转发
			proxy_pass https://guangmuhua.com:9001; 
						
		}
		
		# 缓存静态资源文件
		location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
			log_not_found off;
			# 关闭日志
			access_log off;
			# 缓存时间7天
			expires 7d;
			# 源服务器
			proxy_pass http://guangmuhua.com:8080;
			# 指定上面设置的缓存区域
			proxy_cache xaCache;
			# 缓存过期管理
			proxy_cache_valid 200 302 1d;
			proxy_cache_valid 404 10m;
			proxy_cache_valid any 1h;
			proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
		}
      
    }

}



四、Nginx的启停

到Niginx的根目录下:

启动: start nginx

停止: nginx -s stop

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/21.html

分享给朋友:

“记Nginx开启网站Https” 的相关文章

nginx的应用场景

Nginx是一款高性能的HTTP服务器和反向代理服务器,它以其稳定性、丰富的功能集、简单的配置以及低资源消耗而闻名。Nginx的应用场景非常广泛,以下是一些主要的应用场景1、Web服务器Nginx可以作为静态内容(如HTML文件、图片、CSS和JavaScript等)的Web服务器。它也可以通过Fa...

运维笔记:Windows下如何实现nginx服务自启动,看完你就会了

Nginx作为有每一个两三年工作经验的程序员来说都不陌生,基本上每个线上部署的项目都需要用到,Nginx常用的功能有负载均衡、反向代理、正向代理、搭建FTP服务等等。为了满足Nginx服务可以随操作系统启动,如果是Linux服务器的话可以通过shell脚本设置Nginx自启动,对于Windows操作...

服务器不能正常关机和重启是怎么回事?

服务器不能正常关机和重启是怎么回事?服务器无法正常关机或重启可能是由多种原因引起的,涉及操作系统、硬件、应用程序和配置设置等方面。以下是详细的原因分析及对应的解决方案。一、服务器无法关机/重启的常见原因1. 操作系统问题(1)系统进程未正常终止某些进程或服务在关机时未能按预期停止,导致系统卡在关机或...

压测nginx出现的问题分析

压测nginx出现no live upstreams while connecting to upstream的问题分析基础环境版本信息Centos 7.1nginx version: openresty/1.13.6.2nginx配置信息stream {   ...

网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击

一、简介对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。nginx两个限流模块:连接频率限制,ngx_http_lim...

Java基础教程:k8s快速入门 k8s jmeter

介绍容器化部署随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署虽然容器化部署可以...