天天看點

Nginx将請求轉發至後端應該怎麼做?

建立一個nginx server

在nginx的配置檔案中建立一個server監聽前端部署的端口

server
{
    #監聽端口
    listen 80;
    server_name 網站名稱;
}      

使用Nginx代理前端頁面

然後在server中添加一個location,就是把通路路徑指向前端項目打包後的位址

location / {
  root 前端項目打包後的位址;
  index index.html index.htm;
}      

nginx請求轉發到後端

在部署前後端分離項目時,通常都要使用nginx把前端的請求轉發到後端的接口上去,這就要配置nginx的proxy_pass功能。

# 轉發請求到後端
location /api/ {
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  # proxy_redirect off;
  # proxy_set_header X-NginX-Proxy true;
  proxy_pass 後端接口位址;
}      

代理轉發需要注意的事兒

在nginx中配置proxy_pass代理轉發時,如果在proxy_pass後面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把比對的路徑部分也給代理走。

第一種

代理至位址,proxy_pass 後面沒有 “ / ”

location /api {
  proxy_pass http://localhost:9898;
}      
  • 通路:http://localhost/api/xxx
  • 轉至:http://localhost:9898/xxx

第二種

代理至位址,proxy_pass 後面有 “ / ”

location /api {
  proxy_pass http://localhost:9898/;
}      
  • 通路:http://localhost/api/xxx
  • 轉至:http://localhost:9898/api/xxx

第三種

location /page {
    alias   /usr/share/nginx/html/page/;
    index  index.html index.html;
}      
#一鍵申請SSL證書驗證目錄相關設定
location ~ \.well-known{
    allow all;
}
#代理網站圖示,可以注釋
location  = /favicon.ico {
  root /**/assets/;
}

#禁止通路的檔案或目錄
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
    return 404;
}

#通路日志
access_log  /**/日志名;
#錯誤日志
error_log  /**/日志名;      

繼續閱讀