前文
记录一下在linux服务器下配置nginx中nginx.conf文件代理访问springboot项目
1. spring boot.yml配置
其他mysql,redis,mybatis等之类的配置就不一一列出了
# 自定义配置 为了等下验证读取的配置文件环境
appName: productserver:port: 8083 # 应用服务 WEB 访问端口servlet:context-path: /apisession:timeout: PT60M #session过期时间 60M 一个小时
2. nginx配置
查看nginx安装目录
whereis nginx
修改nginx.conf即可,一般配置文件都在**/usr/local/nginx/conf**目录下
2.1 https配置
#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;#将服务所有的 http 请求转换为 https 请求server {listen 80;# listen 8081; # listen 443 ssl;listen 442 ssl;# 因为服务器没有完成备案导致我的80,443端口不能开放,所以我这里演示使用8081,442# 我的nginx配置文件上方的80端口是注释掉的,#你的域名,请不要带有http://或者https://server_name xxx.com;#charset koi8-r;#access_log logs/host.access.log main;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root html;index index.html index.htm;}#此处呼应 spring boot 应用内的 servlet.context-path 配置#说明: 如果你访问 www.xxxx.com/api 将会请求转发到服务器内的 127.0.0.1:8083 服务location /api {proxy_pass http://127.0.0.1:8083;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m;}#说明: 这里模拟静态资源读取,示例请求url: http://www.xxxx.com/app_images/xxx.png#访问 www.xxxx.cn/app_images/xxx.png 会转发访问服务器内的绝对路径/usr/local/app_images/xxx.pnglocation /app_images {root /usr/local;} # error_page 错误页面 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
2.2 http配置
上传证书到conf目录下,创建一个cert文件夹方便管理
免费证书申请可以使用阿里云,腾讯云,https://freessl.cn/等
#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;#将服务所有的 http 请求转换为 https 请求server {listen 80;# 因为服务器没有完成备案导致我的80端口不能开放,所以我这里演示使用下面的8081# 我的nginx配置文件上方的80端口是注释掉的,# listen 8081; #你的域名,请不要带有http://或者https://server_name xxxx.com;#charset koi8-r;#access_log logs/host.access.log main;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root html;index index.html index.htm;}#此处呼应 spring boot 应用内的 servlet.context-path 配置#说明: 如果你访问 www.xxxx.com/api 将会请求转发到服务器内的 127.0.0.1:8083 服务location /api {proxy_pass http://127.0.0.1:8083;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m;}#说明: 这里模拟静态资源读取,示例请求url: http://www.xxxx.com/app_images/xxx.png#访问 www.xxxx.com/app_images/xxx.png 会转发访问服务器内的绝对路径/usr/local/app_images/xxx.pnglocation /app_images {root /usr/local;} # error_page 错误页面 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
2.3 访问测试
配置文件完成后切记重新启动nginx,我这里使用http配置代理端口为8081,所以浏览器输入域名:8081/api(spring boot中配置的context-path)/请求(Controller路径)
http方式测试
- 访问nginx
- 创建静态资源文件夹,上传一张图片进行测试
- controller请求路径测试
可以看到我们使用http方式时,地址栏度提示的不安全链接
https:测试
把配置文件切换成https方式,重启nginx,目前备案还没完成,所以我这里需要使用域名:442进行访问
使用https访问消除了不安全告警