当前位置:   article > 正文

Nginx 域名证书 Http 和 Https 详细配置

Nginx 域名证书 Http 和 Https 详细配置

小伙伴们好,欢迎关注,一起学习,无限进步

项目开发完成后,将项目部署到服务器上时,为了保证安全性和加密通信,我们通常会配置 Nginx 作为反向代理服务器,并使用域名证书启用 HTTPS。下面将为你指导 Nginx 如何配置域名和证书。

环境准备

域名准备,提前准备好域名或重新申请一个新的域名,域名解析到你部署项目的服务器。下载好 Nginx 对应的证书,这里我用的阿里云,一个域名可以申请 20 个免费的证书(推荐)。

Nginx 部署步骤

可参考这篇文章:nginx 在 Linux 系统下安装部署的两种方式详细说明

前后端项目部署可参考这篇文章:非常详细的前端后端分离项目部署步骤

证书申请

阿里云证书申请:地址

免费证书 -> 创建证书 -> 输入证书需要解析的域名,解析完成,下载对应的项目部署代理对应的 nginxtomcat证书

上传证书

在安装 Nginx 的目录下创建一个 ssl 的文件夹,证书一开始下载后是一个 zpi 的压缩包,上传解压修改证书配置对应的目录即可。

有些服务器没有 zipunzip 的以来和命令,执行以下一行命令

yum install -y zip unzip
  • 1

配置 ssl 及证书

ssl 配置说明,修改 linsten 对应的端口和 server_name 对应的域名,修改证书对应的 xxx.pemxxx.key

# 修改监听的端口,注意不要忘了加 ssl
listen  443 default ssl;
# 域名可以有多个,用逗号隔开
server_name  xxxxx.com;

# 配置域名证书
ssl_certificate         /data/nginx/ssl/sjy.pem; 
ssl_certificate_key     /data/nginx/ssl/sjy.key;
# 用于缓存 SSL 会话参数的共享内存区的大小,使用大小单位(例如 10m 表示 10 兆字节)
ssl_session_cache  shared:SSL:1m;

#  SSL 会话的过期时间 默认5分钟
ssl_session_timeout 5m;
# SSL/TLS 协议版本,可以指定多个,以空格分开
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
# 指定是否优先使用服务器端加密算法顺序。设置为 on,表示使用服务器端优先的加密算法顺序。默认情况下,该选项为 off
ssl_prefer_server_ciphers on;
# 加密算法的优先顺序
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

修改完成,重启 nginx ,然后通过浏览器访问域名:xxxx.com 即可

Nginx 完整配置

可直接使用,修改对应的文件目录即可

user  root;
worker_processes  auto;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

	# 开启gzip压缩
	gzip on;
	# 不压缩临界值,大于1K的才压缩,一般不用改
	gzip_min_length 1k;
	# 压缩缓冲区
	gzip_buffers 16 64K;
	# 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
	gzip_http_version 1.1;
	# 压缩级别,1-10,数字越大压缩的越好,时间也越长
	gzip_comp_level 5;
	# 进行压缩的文件类型
	gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
	# 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
	gzip_vary on;
	# IE6对Gzip不怎么友好,不给它Gzip了
	gzip_disable "MSIE [1-6]\.";

	# 配置 80 端口
    server {
        listen       80;
		# 域名可以有多个,用逗号隔开,把 xxxx 替换成对应域名即可,不许加 http www
		server_name  xxxxx.com; 
		# HTTP 自动跳转 HTTPS
		rewrite ^(.*) https://$server_name$1 permanent;
		charset utf-8;

		location / {
            root   /data/pro/front/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
       	}
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}

       	 error_page   500 502 503 504  /50x.html;
        	location = /50x.html {
        	root   html;
       	}
    }
	
	# 配置 443 端口
	server {
        listen  443 default ssl;
		# 域名可以有多个,用逗号隔开,把 xxxx 替换成对应域名即可,不许加 http www
		server_name  xxxxx.com;
		charset utf-8;
		
		
        # 配置域名证书
        ssl_certificate         /data/nginx/ssl/sjy.pem; 
        ssl_certificate_key     /data/nginx/ssl/sjy.key;
        # 用于缓存 SSL 会话参数的共享内存区的大小,使用大小单位(例如 10m 表示 10 兆字节)
        ssl_session_cache  shared:SSL:1m;

		#  SSL 会话的过期时间 默认5分钟
        ssl_session_timeout 5m;
        # SSL/TLS 协议版本,可以指定多个,以空格分开
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
        # 指定是否优先使用服务器端加密算法顺序。设置为 on,表示使用服务器端优先的加密算法顺序。默认情况下,该选项为 off
        ssl_prefer_server_ciphers on;
        # 加密算法的优先顺序
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        
        
        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_set_header    X-Forwarded-Proto     $scheme;

		location / {
            root   /data/pro/front/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
       	}
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}

       	error_page   500 502 503 504  /50x.html;
        	location = /50x.html {
        	root   html;
       	}
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108

替换配置后,重新加载一个 nginx.conf 的配置文件,浏览器能正常访问则说明配置成功

Nginx 常用命令

# 首先进入 nginx 可执行文件目录,我这是是安装到 /data/nginx/sbin 目录下
cd /data/nginx/sbin
./nginx  # 启动
./nginx -s stop  # 停止(暴力停止服务)
./nginx -s quit  # 安全退出(优雅停止服务)
./nginx -s reload  # 重新加载配置文件
./nginx -h # 帮助命令
./nginx -t # 检查配置文件
/data/nginx/conf/nginx.conf # nginx配置文件路径
ps aux|grep nginx  # 查看nginx进程
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/197585
推荐阅读
相关标签
  

闽ICP备14008679号