nginx.conf 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. worker_processes 1;
  2. error_log /var/log/nginx/error.log warn;
  3. pid /var/run/nginx.pid;
  4. events {
  5. # 可以根据业务并发量适当调高
  6. worker_connections 1024;
  7. }
  8. http {
  9. include mime.types;
  10. default_type application/octet-stream;
  11. # 高效传输文件
  12. sendfile on;
  13. # 长连接超时时间
  14. keepalive_timeout 65;
  15. # 单连接最大请求数,提高长连接复用率
  16. keepalive_requests 100000;
  17. # 限制body大小
  18. client_max_body_size 100m;
  19. client_header_buffer_size 32k;
  20. client_body_buffer_size 512k;
  21. # 开启静态资源压缩
  22. gzip_static on;
  23. # 连接数限制 (防御类配置) 10m 一般够用了,能存储上万 IP 的计数
  24. limit_conn_zone $binary_remote_addr zone=perip:10m;
  25. limit_conn_zone $server_name zone=perserver:10m;
  26. # 隐藏 nginx 版本号,防止暴露版本信息
  27. server_tokens off;
  28. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  29. '$status $body_bytes_sent "$http_referer" '
  30. '"$http_user_agent" "$http_x_forwarded_for"';
  31. access_log /var/log/nginx/access.log main;
  32. upstream server {
  33. ip_hash;
  34. server 127.0.0.1:8080;
  35. server 127.0.0.1:8081;
  36. }
  37. upstream monitor-admin {
  38. server 127.0.0.1:9090;
  39. }
  40. upstream snailjob-server {
  41. server 127.0.0.1:8800;
  42. }
  43. server {
  44. listen 80;
  45. server_name localhost;
  46. # https配置参考 start
  47. #listen 443 ssl;
  48. # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
  49. #ssl on;
  50. #ssl_certificate /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
  51. #ssl_certificate_key /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
  52. #ssl_session_timeout 5m;
  53. #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  54. #ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
  55. #ssl_prefer_server_ciphers on;
  56. # https配置参考 end
  57. # 演示环境配置 拦截除 GET POST 之外的所有请求
  58. # if ($request_method !~* GET|POST) {
  59. # rewrite ^/(.*)$ /403;
  60. # }
  61. # location = /403 {
  62. # default_type application/json;
  63. # return 200 '{"msg":"演示模式,不允许操作","code":500}';
  64. # }
  65. # 限制外网访问内网 actuator 相关路径
  66. location ~ ^(/[^/]*)?/actuator.*(/.*)?$ {
  67. return 403;
  68. }
  69. location / {
  70. root /usr/share/nginx/html; # docker映射路径 不允许更改
  71. try_files $uri $uri/ /index.html;
  72. index index.html index.htm;
  73. }
  74. location /prod-api/ {
  75. # 设置客户端请求头中的 Host 信息(保持原始 Host)
  76. proxy_set_header Host $http_host;
  77. # 获取客户端真实 IP
  78. proxy_set_header X-Real-IP $remote_addr;
  79. # 自定义头 REMOTE-HOST,记录客户端 IP
  80. proxy_set_header REMOTE-HOST $remote_addr;
  81. # 获取完整的客户端 IP 链(经过多级代理时)
  82. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  83. # 设置后端响应超时时间(这里是 24 小时,适合长连接/SSE)
  84. proxy_read_timeout 86400s;
  85. # SSE (Server-Sent Events) 与 WebSocket 支持参数
  86. proxy_http_version 1.1;
  87. proxy_set_header Upgrade $http_upgrade;
  88. proxy_set_header Connection "upgrade";
  89. # 禁用代理缓冲,数据直接传给客户端
  90. proxy_buffering off;
  91. # 禁用代理缓存
  92. proxy_cache off;
  93. # 按 IP 限制连接数(防 CC 攻击) 小型站:10~20 就够 中型站:50~100
  94. limit_conn perip 20;
  95. # 按 Server 限制总并发连接数 根据服务器的最大并发处理能力来定 太小会限制合法用户访问,太大会占满服务器资源
  96. limit_conn perserver 500;
  97. proxy_pass http://server/;
  98. }
  99. # https 会拦截内链所有的 http 请求 造成功能无法使用
  100. # 解决方案1 将 admin 服务 也配置成 https
  101. # 解决方案2 将菜单配置为外链访问 走独立页面 http 访问
  102. location /admin/ {
  103. # 设置客户端请求头中的 Host 信息(保持原始 Host)
  104. proxy_set_header Host $http_host;
  105. # 获取客户端真实 IP
  106. proxy_set_header X-Real-IP $remote_addr;
  107. # 自定义头 REMOTE-HOST,记录客户端 IP
  108. proxy_set_header REMOTE-HOST $remote_addr;
  109. # 获取完整的客户端 IP 链(经过多级代理时)
  110. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  111. # 禁用代理缓冲,数据直接传给客户端
  112. proxy_buffering off;
  113. # 禁用代理缓存
  114. proxy_cache off;
  115. proxy_pass http://monitor-admin/admin/;
  116. }
  117. location /snail-job/ {
  118. # 设置客户端请求头中的 Host 信息(保持原始 Host)
  119. proxy_set_header Host $http_host;
  120. # 获取客户端真实 IP
  121. proxy_set_header X-Real-IP $remote_addr;
  122. # 自定义头 REMOTE-HOST,记录客户端 IP
  123. proxy_set_header REMOTE-HOST $remote_addr;
  124. # 获取完整的客户端 IP 链(经过多级代理时)
  125. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  126. # SSE (Server-Sent Events) 与 WebSocket 支持参数
  127. proxy_http_version 1.1;
  128. proxy_set_header Upgrade $http_upgrade;
  129. proxy_set_header Connection "upgrade";
  130. # 禁用代理缓冲,直接传输给客户端
  131. proxy_buffering off;
  132. # 禁用代理缓存
  133. proxy_cache off;
  134. proxy_pass http://snailjob-server/snail-job/;
  135. }
  136. error_page 500 502 503 504 /50x.html;
  137. location = /50x.html {
  138. root html;
  139. }
  140. }
  141. }