nginx动静分离

亦凉 2023-08-17 16:41 150阅读 0赞

1. 场景描述

今天做nginx的动静分离,稍微走了点弯路,其实也谈不上,记录下吧,希望可以帮到有需要的朋友。

2. 解决方案

先说下我们的需求,使用域名(www.ruanjianlaowang.com)到服务器,服务器使用openresty部署的nginx,然后nginx做动静分离,静态文件按照模块分区;动态文件走负载均衡(走到springcloud gateway做用户统一认证后,再路由到对应系统),域名默认路由到首页。

2.1 整体思路

(1)首先是静态文件,在nginx的html文件中新建static文件夹,各个模块在static下面新建自己的文件夹;

(2)除了静态文件,其余的都走动态代理,首先判断下是不是域名不带任何后缀,是的话,直接跳转到index.html;

(3)动态请求跳转,负载均衡,跳转到网关进行校验。

2.2 配置说明

整体配置如下:

  1. #软件老王
  2. #user nobody;
  3. worker_processes 1;
  4. #error_log logs/error.log;
  5. #error_log logs/error.log notice;
  6. #error_log logs/error.log info;
  7. #pid logs/nginx.pid;
  8. events {
  9. worker_connections 1024;
  10. }
  11. http {
  12. include mime.types;
  13. default_type application/octet-stream;
  14. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  15. '$status $body_bytes_sent "$http_referer" '
  16. '"$http_user_agent" "$http_x_forwarded_for"';
  17. access_log logs/access.log main;
  18. sendfile on;
  19. #tcp_nopush on;
  20. #keepalive_timeout 0;
  21. keepalive_timeout 65;
  22. #gzip on;
  23. upstream ruanjianlaowang{
  24. server 10.192.168.111:8002;
  25. server 10.192.168.222:8002;
  26. server 10.192.168.333:8002;
  27. }
  28. server {
  29. listen 80;
  30. server_name www.ruanjianlaowang.com;
  31. #charset koi8-r;
  32. #access_log logs/host.access.log main;
  33. #1 静态
  34. location /static {
  35. root /opt/openresty/nginx/html;
  36. #index index.html;
  37. }
  38. #2 动态
  39. location / {
  40. #3 首页
  41. if ( $request_uri = "/" ) {
  42. rewrite "/" http://ruanjianlaowang.com/static/index.html break;
  43. }
  44. proxy_set_header X-Real-IP $remote_addr;
  45. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  46. proxy_set_header X-Forwarded-Proto $scheme;
  47. proxy_set_header Host $host:80;
  48. proxy_set_header X-NginX-Proxy true;
  49. proxy_set_header Connection "";
  50. proxy_http_version 1.1;
  51. #4负载均衡
  52. proxy_pass http://ruanjianlaowang;
  53. }
  54. underscores_in_headers on;
  55. }
  56. }
  57. #软件老王

详细说明:

(1) 静态请求

当使用www.ruanjianlaowang.com/static进行请求的时候,首先精确匹配到/opt/openresty/nginx/html/static下面找对应的静态资源返回。

  1. #1 静态,软件老王
  2. location /static {
  3. root /opt/openresty/nginx/html;
  4. #index index.html;
  5. }

(2)动态请求

除去静态资源的精确匹配(/static),其他走动态资源请求。

  1. #2 动态,软件老王
  2. location / {
  3. }

(3)首页跳转

当请求中uri中只有域名的时候,转到index.html首页。

  1. #2 动态,软件老王
  2. location / {
  3. #3 首页,软件老王
  4. if ( $request_uri = "/" ) {
  5. rewrite "/" http://ruanjianlaowang.com/static/index.html break;
  6. }
  7. }

(4)负载均衡,转网关

  1. #2 动态,软件老王
  2. location / {
  3. #3 首页,软件老王
  4. if ( $request_uri = "/" ) {
  5. rewrite "/" http://ruanjianlaowang.com/static/index.html break;
  6. }
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. proxy_set_header X-Forwarded-Proto $scheme;
  10. proxy_set_header Host $host:80;
  11. proxy_set_header X-NginX-Proxy true;
  12. proxy_set_header Connection "";
  13. proxy_http_version 1.1;
  14. #4负载均衡,软件老王
  15. proxy_pass http://ruanjianlaowang;
  16. }
  17. upstream ruanjianlaowang{
  18. server 10.192.168.111:8002;
  19. server 10.192.168.222:8002;
  20. server 10.192.168.333:8002;
  21. }

更多知识请关注公众号:「软件老王」,IT技术与相关干货分享,回复关键字获取对应干货,java,送必看的10本“武功秘籍”;图片,送100多万张可商用高清图片;面试,送刚毕业就能月薪“20k”的java面试题,后续不断更新中,比如“软考”、“工具”等,已经在整理中。

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Nginx 动静分离

    1、nginx 与 tomcat 处理静态资源区别: tomcat静态资源请求量为每秒1000次,则nginx静态资源请求量为每秒6000次,tomcat每秒的吞吐量为0.6

    相关 nginx动静分离

    1. 场景描述 今天做nginx的动静分离,稍微走了点弯路,其实也谈不上,记录下吧,希望可以帮到有需要的朋友。 2. 解决方案 先说下我们的需求,使用域名(www

    相关 nginx ---- 配置动静分离

    不想说话,直接上代码,可能真的是我菜,不然也不会觉得处处是坑,坑坑要命 动静分离之前:(狐火浏览器) ![这里写图片描述][70] 动静分离之后: ![这里写图片描

    相关 nginx动静分离

    动态资源、静态资源分离 动态资源、静态资源分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点

    相关 Nginx--动静分离配置

    动静分离 Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用N