想要使用https访问nginx上部署的项目首先得有ssl证书,ssl证书可以去阿里云或腾讯云之类的平台购买,当然也有免费的。我这里贴出nginx的相关配置来支持https访问,如果不知道怎样配置或者搞不清楚原理的朋友就直接照搬我的这部分server配置就行。
PS:nginx需要安装ssl模块,如果使用docker启动的nginx则已经有了不需要安装。
#配置负载均衡的服务器
upstream backend {
server xxx.xxx.xxx.xxx:xxxx; #这里配置个人服务器的ip和端口
}
server {
listen 443 ssl;
server_name www.abc123.com;
#这里是ssl证书的位置
ssl_certificate /etc/nginx/cert/4373634_www.jxgxedu.cn.pem;
ssl_certificate_key /etc/nginx/cert/4373634_www.jxgxedu.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
#这里配置前端打包文件的目录,访问ip:443/*时就会映射到这个目录去
location / {
root /usr/share/nginx/html/edu;
try_files $uri /index.html;
index index.html;
}
#这里是配置代理,目的是为了配合后端解决跨域问题
location ^~ /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forworded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend/; #这里的backend就是上面配置的服务器
}
}
这里不仅配置了https对于nginx的访问,还配置了代理来访问后端接口,所以前端在做请求时,请求的地址应该写为https://www.abc123.com/api/
+接口地址,这样前端就能使用https来访问到后端的接口了。
顺便贴一个把http重定向为https的配置
#配置负载均衡的服务器
upstream backend {
server xxx.xxx.xxx.xxx:xxxx; #这里配置个人服务器的ip和端口
}
server {
listen 80;
server_name www.abc123.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name www.abc123.com;
#这里是ssl证书的位置
ssl_certificate /etc/nginx/cert/4373634_www.jxgxedu.cn.pem;
ssl_certificate_key /etc/nginx/cert/4373634_www.jxgxedu.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
#这里配置前端打包文件的目录,访问ip:443/*时就会映射到这个目录去
location / {
root /usr/share/nginx/html/edu;
try_files $uri /index.html;
index index.html;
}
#这里是配置代理,目的是为了配合后端解决跨域问题
location ^~ /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forworded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend/; #这里的backend就是上面配置的服务器
}
}