Ubuntu nginx 配置 SSL 证书支持 https 请求

发布于:2025-05-23 ⋅ 阅读:(16) ⋅ 点赞:(0)

证书格式转换地址:https://myssl.com/cert_convert.html

安装证书

一、 证书格式

申请的 nginx pem 证书一般包含 private.keypublic.pem 文件,分别为加密的私钥和公钥文件。如果不是 pem 格式的证书,请通过文章开头的转换网址进行转换

二、 在nginx里部署证书及优化配置ssl

到nginx的conf目录,找到nginx.conf文件,修改或者配置这样一段

server {
	listen 443;
	server_name  www.trustasia.com #你们的域名,如www.abc.com;
	ssl	on;
	ssl_certificate      /xxx/xxx/server.pem; #根据实际的路径和文件名配置
	ssl_certificate_key   /xxx/xxx/server.key; #根据实际的路径和文件名配置
	ssl_session_timeout  5m;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配
	ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配
	ssl_prefer_server_ciphers   on;
	location / {
		root   html; #站点目录
		index  index.html index.htm;
   }
}

下面为配置文件参数说明:

参数 说明
listen 443 SSL访问端口号为443
ssl on 启用SSL功能
ssl_certificate 证书文件server.pem
sslcertificatekey 私钥文件server.pem
ssl_protocols 使用的协议
ssl_ciphers 配置加密套件,写法遵循openssl标准

配置完成后,先用 sudo nginx -t来测试下配置是否有误,正确无误的话,建议重载 nginx `sudo nginx -s reload。

三、 使用全站加密,http自动跳转https(可选)

对于用户,不是不知道https,就是知道https也因为懒,不愿意输入https。这样就有一个需求,让服务器自动把http的请求重定向到https。

在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)

在http的server里 增加rewrite ^(.*) https:$host$1 permanent; 这样就可以实现80进来的请求,重定向为https了。

server {
	server_name  www.trustasia.com
	rewrite ^(.*) https:$host$1 permanent; # rewrite 和 server_name 在同一层级
}

四、端口转发示例(可选)

在配置 nginx 时,进行端口转发是很常规的操作。端口转发时,一般需要添加一些额外的参数才能满足满足正常使用需求, 这里以请求转发到 8081 端口为例,提供一般的配置参考。您可根据自己的实际需求进行修改。

server {

	location / {
			proxy_pass http://127.0.0.1:8081;
			proxy_set_header X-Real-IP $remote_addr; # 无此配置读取用户 ip 时读到的是127.0.0.1
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			add_header Access-Control-Allow-Origin *; # 跨域问题
			add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
			add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
		}
	}
	```

网站公告

今日签到

点亮在社区的每一天
去签到