nginx.production.conf 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # =============================================================================
  2. # 游铛铛 admin 前端 — 生产环境 Nginx 示例
  3. # 部署机:125.122.32.114
  4. #
  5. # 用法 A(推荐,与 Debian/Ubuntu 默认结构一致):
  6. # 只取下方 server { ... } 块,保存为
  7. # /etc/nginx/sites-available/youdangdang-admin
  8. # ln -sf /etc/nginx/sites-available/youdangdang-admin /etc/nginx/sites-enabled/
  9. # 主 nginx.conf 需保留 http { include sites-enabled/*; }
  10. #
  11. # 用法 B:整机仅此站点时,可将本文件作为 /etc/nginx/nginx.conf 使用(已含 events/http)。
  12. #
  13. # 前置条件:
  14. # 1. 将 npm run build 生成的 dist 放到 root 指向的目录(默认 /var/www/youdangdang-admin/dist)
  15. # 2. 本机已启动 backend-admin(uvicorn 监听 127.0.0.1:9999 或 0.0.0.0:9999)
  16. # 3. admin 打包时 VITE_API_BASE_URL 为空(同源,仅请求 /admin/...,无跨域)
  17. # =============================================================================
  18. user www-data;
  19. worker_processes auto;
  20. error_log /var/log/nginx/error.log warn;
  21. pid /run/nginx.pid;
  22. events {
  23. worker_connections 1024;
  24. }
  25. http {
  26. include /etc/nginx/mime.types;
  27. default_type application/octet-stream;
  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. sendfile on;
  33. tcp_nopush on;
  34. keepalive_timeout 65;
  35. client_max_body_size 50m;
  36. gzip on;
  37. gzip_vary on;
  38. gzip_min_length 1024;
  39. gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
  40. # 若与本机其它站点冲突,可改为 include /etc/nginx/conf.d/*.conf; 并只放 server 块到单独文件
  41. server {
  42. listen 80;
  43. listen [::]:80;
  44. server_name 125.122.32.114;
  45. # 修改为服务器上 admin/dist 的实际路径
  46. root /var/www/youdangdang-admin/dist;
  47. index index.html;
  48. # ---------- 管理端 API:同域反代,浏览器无跨域 ----------
  49. # 请求路径保持不变转发到 FastAPI(/admin/...)
  50. location /admin/ {
  51. proxy_pass http://127.0.0.1:9999;
  52. proxy_http_version 1.1;
  53. proxy_set_header Host $host;
  54. proxy_set_header X-Real-IP $remote_addr;
  55. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  56. proxy_set_header X-Forwarded-Proto $scheme;
  57. proxy_connect_timeout 60s;
  58. proxy_send_timeout 60s;
  59. proxy_read_timeout 60s;
  60. # 长连接可选(SSE/WebSocket 时按需打开)
  61. # proxy_set_header Connection "";
  62. }
  63. # 无尾部斜杠的 /admin 可选重定向(与前端路由一致即可)
  64. location = /admin {
  65. return 301 /admin/;
  66. }
  67. # ---------- 后端健康检查、Swagger(按需保留;不需要可注释) ----------
  68. location = /health {
  69. proxy_pass http://127.0.0.1:9999/health;
  70. proxy_set_header Host $host;
  71. proxy_set_header X-Real-IP $remote_addr;
  72. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  73. proxy_set_header X-Forwarded-Proto $scheme;
  74. }
  75. location /docs {
  76. proxy_pass http://127.0.0.1:9999;
  77. proxy_set_header Host $host;
  78. proxy_set_header X-Real-IP $remote_addr;
  79. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  80. proxy_set_header X-Forwarded-Proto $scheme;
  81. }
  82. location /redoc {
  83. proxy_pass http://127.0.0.1:9999;
  84. proxy_set_header Host $host;
  85. proxy_set_header X-Real-IP $remote_addr;
  86. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  87. proxy_set_header X-Forwarded-Proto $scheme;
  88. }
  89. location = /openapi.json {
  90. proxy_pass http://127.0.0.1:9999/openapi.json;
  91. proxy_set_header Host $host;
  92. }
  93. # ---------- SPA:前端路由 ----------
  94. location / {
  95. try_files $uri $uri/ /index.html;
  96. }
  97. # 静态资源缓存(可选)
  98. location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
  99. expires 7d;
  100. add_header Cache-Control "public, immutable";
  101. try_files $uri =404;
  102. }
  103. }
  104. }