nginx配置靜態文件和服務代理


需要把前后端分離的項目部署到服務器,前端靜態資源通過nginx代理訪問,接口請求代理到指定端口的服務上,先看配置:

server {
    listen       4040;
    server_name  127.0.0.1;
    
    location / {
       root   /opt/demo/static;
       index  index.html index.htm;
    }
    
    location /api {
      proxy_pass   http://127.0.0.1:4041/;
    }
}

nginx代理端口4040, 后台服務端口4041. 這個要注意了,nginx監聽的端口不能與服務端口相同

/根目錄 --被代理到--> /opt/demo/static路徑下

那么在static下的靜態資源就可以直接被訪問了,形式: http://127.0.0.1:4040/index.html

下面重點來了!!!

所有以api開頭的請求--被代理到-->4041端口

也就是說 http://127.0.0.1:4040/api/test 會訪問到后台服務.這里面有個關鍵點

http://127.0.0.1:4041/http://127.0.0.1:4041 是有區別的!!!

假如請求是: http://127.0.0.1:4040/api/test

  • 加/ --被代理到--> http://127.0.0.1:4041/test
  • 不加/ --被代理到--> http://127.0.0.1:4041/api/test

也就是說,加了/會被代理到指定的路徑,不加/會被代理到指定路徑+api的路徑下!!!

你品,細細的品!


記錄下線上nginx配置:

location /api {
  proxy_pass   http://127.0.0.1:4041/;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  proxy_max_temp_file_size 0;
  proxy_connect_timeout 300s;
  proxy_send_timeout 300s;
  proxy_read_timeout 300s;
  proxy_buffer_size 4k;
  proxy_buffers  4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  index  index.html index.htm;
  client_body_buffer_size 128k;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM