course.8082.conf 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. server {
  2. listen 8082;
  3. server_name _;
  4. # 安全 Header
  5. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
  6. add_header X-Frame-Options SAMEORIGIN;
  7. add_header X-Content-Type-Options nosniff;
  8. add_header X-XSS-Protection "1; mode=block";
  9. add_header Content-Security-Policy "default-src 'self' data: blob: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:;" always;
  10. root /opt/course;
  11. try_files $uri $uri/ /index.html;
  12. #-------------------------------------------------
  13. # 前端应用
  14. #-------------------------------------------------
  15. location = / {
  16. rewrite ^/ /course break;
  17. }
  18. location / {
  19. index index.html;
  20. try_files $uri $uri/ /index.html;
  21. expires 7d;
  22. add_header Cache-Control "public, max-age=604800, immutable";
  23. }
  24. #-------------------------------------------------
  25. # OSS 静态目录(带目录索引)
  26. #-------------------------------------------------
  27. location ^~ /oss/ {
  28. alias /opt/course/oss/;
  29. index _; # 去掉默认的界面
  30. autoindex on; # 开启目录索引
  31. autoindex_exact_size off; # 文件大小人性化显示
  32. autoindex_localtime on; # 显示本地时间
  33. charset utf-8;
  34. expires 30d;
  35. add_header Cache-Control "public, max-age=2592000, immutable";
  36. # 如果不做这个配置,点击目录下的txt文件,大部分浏览器默认是直接浏览的。这里通过添加响应头来控制。
  37. if ($request_filename ~* ^.*?\.(html|txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|conf)$){
  38. add_header Content-Disposition 'attachment;';
  39. }
  40. }
  41. #-------------------------------------------------
  42. # lua后端接口
  43. #-------------------------------------------------
  44. # lua 文件上传接口
  45. location = /api/upload {
  46. content_by_lua_file /opt/course/lua/course_upload.lua;
  47. }
  48. # lua 读取json文件
  49. location ^~ /api/json/ {
  50. content_by_lua_file /opt/course/lua/course_query.lua;
  51. }
  52. location = /api/device/status {
  53. # 允许所有域名跨域
  54. add_header 'Access-Control-Allow-Origin' '*';
  55. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  56. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
  57. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  58. default_type application/json;
  59. content_by_lua_file /opt/course/lua/course_device_status.lua;
  60. }
  61. #-------------------------------------------------
  62. # 后端接口代理
  63. #-------------------------------------------------
  64. location ^~ /api/ {
  65. default_type application/json;
  66. add_header 'Access-Control-Allow-Origin' '*' always;
  67. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
  68. add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With' always;
  69. add_header 'Access-Control-Allow-Credentials' 'true' always;
  70. # 移除 rewrite,改用 proxy_pass 直接处理
  71. proxy_pass http://124.222.28.5:7213/;
  72. proxy_set_header Host m1.apifoxmock.com;
  73. proxy_set_header X-Real-IP $remote_addr;
  74. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  75. proxy_set_header X-Forwarded-Proto $scheme;
  76. # 处理代理失败的情况(如404)
  77. proxy_intercept_errors on;
  78. error_page 404 = @course_api_fallback;
  79. }
  80. location @course_api_fallback {
  81. default_type application/json;
  82. content_by_lua_file /opt/course/lua/course_query.lua;
  83. }
  84. }