最近部署
nginx
的小總結,作個記錄。
項目中配有除本地服務地址外的第三方服務地址,假設其地址爲https://www.example.com
,那麼訪問http://localhost:8000/todo/xxx
將會被代理至https://www.example.com/todo/xxx
。html
http { # 其餘省略 server { listen 8000; # 監聽端口 server_name localhost; # 前端地址 root project; # 前端項目文件目錄 location ^~/todo/{ rewrite /(.*)$ /$1 break; proxy_pass https://www.example.com;# 跳轉第三方地址 } } }
適用場景:用戶跳過登陸頁直接訪問http://localhost:8000/System/html
。前端
若是以前沒有登陸過/Cookie過時失效,就會跳轉至http://localhost:8000/login.html
登陸頁,nginx
若想要在登陸頁成功登錄以後跳轉回原來想要訪問的地址,從Cookie中獲取就行了。api
http { # 其餘省略 server { listen 8000; # 監聽端口 server_name localhost; # 前端地址 root project; # 前端項目文件目錄 location ^~/System/html{ auth_request /auth; error_page 401 = @error401;# 401爲沒有訪問權限/需進行登陸驗證 } location /auth {# 用戶登陸驗證 internal;# 該location只能被內部調用,外部訪問無效->404 proxy_set_header Host $host; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_pass http://localhost:8001/LoginVerification;# 用戶登陸驗證地址 } location @error401 { add_header Set-Cookie "redirect=$scheme://$http_host$request_uri;Path=/";# 將當前訪問地址設置爲Cookie set $page_401 http://localhost:8000/login.html;# 登陸頁面 return 302 $page_401; } } }
假設前端項目端口爲8000
,而服務端口則是8001
,配置以下↓代理
http { # 其餘省略 server { listen 8000; # 監聽端口 server_name localhost; # 前端地址 root project; # 前端項目文件目錄 location ^~/api/{ proxy_pass http://localhost:8001;# 跳轉端口 proxy_set_header X-real-ip $remote_addr;# 發出請求的IP proxy_set_header Host $http_host; } } }