nginx-production.conf 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # 若依前后端部署Nginx配置
  2. # 复制此内容到 C:\nginx\conf\nginx.conf 的 http 块中
  3. server {
  4. listen 80;
  5. server_name localhost;
  6. # 前端静态文件
  7. location / {
  8. root html; # 指向 C:\nginx\html(前端dist文件)
  9. index index.html index.htm;
  10. try_files $uri $uri/ /index.html;
  11. }
  12. # ========== 外部 API 反向代理 ==========
  13. # 客户浏览器只访问公司服务器一个域名,避免跨域 + 天地图 tk Referer 白名单 + 客户出口防火墙三重问题
  14. # 对应前端 vite.config.js 的 server.proxy 配置和 server_config.js 的 PROXY_* 常量
  15. # 注意:location 前缀必须与 server_config.js 中的 PROXY_SLT/PROXY_TIANDITU_TILE/PROXY_TIANDITU_API 完全一致
  16. # proxy_pass 末尾必须带 /,Nginx 才会去掉 location 前缀转发(如 /proxy/slt/Api/LastWind → /Api/LastWind)
  17. # 浙江水情台风 API(风场/降雨/云图/雷达)
  18. location /proxy/slt/ {
  19. proxy_pass https://typhoon.slt.zj.gov.cn/;
  20. proxy_set_header Host typhoon.slt.zj.gov.cn;
  21. proxy_set_header X-Real-IP $remote_addr;
  22. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23. proxy_set_header X-Forwarded-Proto $scheme;
  24. proxy_ssl_server_name on;
  25. proxy_connect_timeout 60s;
  26. proxy_send_timeout 60s;
  27. proxy_read_timeout 60s;
  28. }
  29. # 天地图地理编码 API
  30. location /proxy/tianditu-api/ {
  31. proxy_pass https://api.tianditu.gov.cn/;
  32. proxy_set_header Host api.tianditu.gov.cn;
  33. proxy_set_header X-Real-IP $remote_addr;
  34. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  35. proxy_set_header X-Forwarded-Proto $scheme;
  36. proxy_ssl_server_name on;
  37. }
  38. # 天地图瓦片(img_c / cia_c)
  39. # Referer 头必填:天地图 WAF 会拦截无 Referer 的请求返回 418
  40. location /proxy/tianditu/ {
  41. proxy_pass https://t0.tianditu.gov.cn/;
  42. proxy_set_header Host t0.tianditu.gov.cn;
  43. proxy_set_header Referer "https://tianditu.gov.cn/";
  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_ssl_server_name on;
  48. }
  49. # 后端API代理 - 关键配置
  50. location /prod-api/ {
  51. proxy_pass http://localhost:8080/prod-api/; # 代理到后端
  52. proxy_set_header Host $host;
  53. proxy_set_header X-Real-IP $remote_addr;
  54. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  55. proxy_set_header X-Forwarded-Proto $scheme;
  56. # 超时设置
  57. proxy_connect_timeout 60s;
  58. proxy_send_timeout 60s;
  59. proxy_read_timeout 60s;
  60. }
  61. # 上传文件访问
  62. location /uploads/ {
  63. proxy_pass http://localhost:8080/uploads/; # 代理到后端
  64. autoindex on;
  65. }
  66. # profile文件访问(自定义服务GeoJSON等)
  67. location /profile/ {
  68. proxy_pass http://localhost:8080/prod-api/; # 代理到后端(带context-path)
  69. proxy_set_header Host $host;
  70. proxy_set_header X-Real-IP $remote_addr;
  71. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  72. proxy_set_header X-Forwarded-Proto $scheme;
  73. }
  74. # 错误页面
  75. error_page 404 /index.html;
  76. error_page 500 502 503 504 /50x.html;
  77. location = /50x.html {
  78. root html;
  79. }
  80. }