Linux上Nginx中开启SSL模块,配置Https访问方式
一、Nginx简介
1.Nginx是一款轻量级、高性能的web服务器/反向代理服务器,能实现负载均衡。
2.负载均衡的方式有:轮询、权重(weight)、热备(backup)以及IP地址Hash。
二、主题业务背景
一般项目正式上线后,不会再使用服务器的ip地址来访问项目,而是使用事先申请好的域名(该域名绑定IP地址)来访问,这样一来Nginx作为代理服务器需要开启SSL模块,就需要在 nginx.conf 文件进行相关SSL证书的配置以便Nginx实现Https访问,这样大家都可以使用域名随地访问我们的项目了。
三、Nginx实现Https方式前期准备
SSL证书申请
Nginx配置文件中需配置SSL证书的两种pem 和 key格式的文件路径,要拿到这个两个格式文件,首先得使用你的域名成功到申请证书。
Nginx需要开启SSL模块
1.要实现你的Nginx实现Https访问,首先你的Nginx需要开启SSL模块。
2.开启SSL模块有两种方式:nginx安装时就开启该模块、nginx安装成功后再单独开启此模块。两种方式开启的详细步骤大家可以搜索相关文章。
3.推荐开启SSL两种方式参考博文:
https://blog.csdn.net/qq_42751248/article/details/109326646
https://www.cnblogs.com/ghjbk/p/6744131.html
四、Nginx中配置Https
配置前介绍
为了便于更好理解我的nginx.conf文件里的内容,我这里简单介绍一下我的项目:前后端分离的架构,前端是vue项目,后台是SpringBoot项目,由于SpringBoot框架内嵌Tomcat,因此不用再在服务器上安装Tomcat,直接本地打成 jar 包上传至服务,使用命令 “nohup java -jar ***.jar &” 直接启动后端工程即可,前端工程本地打成静态工程上传到服务器特定的目录下即可。
nginx.conf配置详情
#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;
#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;
# HTTPS server
server {
listen 443 ssl;
#域名
server_name 域名名称;
client_max_body_size 1024M;
#填写SSL证书的两个格式文件的绝对路径 cert文件夹存放这两种文件
#cert文件夹位于nginx安装路径/usr/local/nginx/conf下
ssl_certificate cert/******.pem;
ssl_certificate_key cert/******.key;
#以下都是基础配置 照写即可
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
#前端打包后的静态工程存放路径
root /usr/local/app/*****;
#默认访问index.html
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
#所有的带prod-api请求进入
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;
#反向代理地址 由于我的后端工程也是在此服务器上,所以是localhost
#如果你反向代理ip地址不是localhost 请填写具体ip地址 并打开该location注释掉的proxy_set_header
proxy_pass http://localhost:8080/;
}
}
}