Nginx?proxy、rewrite、alias配置過程
Nginx proxy、rewrite、alias配置
proxy
一般解決跨域問題,使用Nginx進行proxy轉(zhuǎn)發(fā),也可以實現(xiàn)負載均衡。
# 代理根目錄到內(nèi)部應用
location / {
proxy_pass http://127.0.0.1:8080;
}
# 代理模塊到內(nèi)部應用,可以帶上后面拼接的路徑,如果訪問的是/order 則會進行一次301重定向,讓瀏覽器訪問/order/
location /order/ {
proxy_pass http://127.0.0.1:8080/;
}
# 靜態(tài)資源
# 路徑匹配 ^~為普通匹配,沒有寫也默認是普通匹配,所以可以不加
root /www/resources/static/;
location ^~ /static/ {
root /www/resources/;
}
# 后綴,文件格式匹配
location ~*\.(gif|jpg|jpeg|png)${
root /www/resources/;
}
location 的匹配取最長 最精確的那條。
rewrite
Nginx的rewrite模塊即ngx_http_rewrite_module標準模塊,主要功能是重寫請求URI,也是Nginx默認安裝的模塊。
rewrite regrex replacement [flag]
匹配正則將其中regrex部分替換成replacement。而flag則表示替換的程度
last匹配成功后,其余匹配不執(zhí)行(可以重寫多個)直接用新的URI進行下一跳,也會為新的URI進行l(wèi)ocation匹配。break停止rewrite的相關(guān)指令,但不進行l(wèi)ocation跳轉(zhuǎn)。重寫后的請求在一個location域中跳轉(zhuǎn)??赡軙腥擞X得沒啥用,但是有些場景就是需要在url上增加一個參數(shù)但頁面不做顯式刷新redirect響應請求頭返回302,重寫瀏覽器uri并進行臨時重定向permanent響應請求頭返回301,重寫瀏覽器uri并進行永久重定向
為了避免一個請求經(jīng)過兩次WAF,又能實現(xiàn)轉(zhuǎn)向到靜態(tài)頁面,用了 redirect重定向,讓第二次請求由瀏覽器發(fā)出
location /download {
rewrite /download index.html redirect;
}
alias
vue的應用入口是index.html,打包后,訪問nginx的80端口想要出這個網(wǎng)頁,就需要配置alias
# 將/download請求 別名到/download/index.html頁面,但是中間會發(fā)生一次301重定向重新訪問/download/
location /download {
index index.html;
alias /static/;
}
靜態(tài)資源別名
# 將/static/的文件都指向nginx 的/resource/static/文件夾
location /static/ {
alias /resource/static/;
}
Nginx的proxy_pass、root、alias的說明
代理配置:
1、root
root配置代理路徑時,會在代理的地址后拼接配置字段:
location /static {
root static/image;
}在訪問http://ip:port/static/*.*時會映射到http://ip:port/static/static/image/*.*
2、alias(只能用于location)
alias配置代理路徑時,直接替換代理地址:
location /static {
alias static/image;
}在訪問http://ip:port/static/*.*時會映射到http://ip:port/static/image/*.*
3、proxy_pass
proxy_pass配置代理路徑時,直接替換整個代理路徑,包括ip地址的端口等:
location /static {
proxy_pass http://ip_two:port_two/static;
}在訪問http://ip:port/static/*.*時會映射到http://ip_two:port_two/static/static/*.*
代理路徑后不帶斜杠時,配置路徑會替代原本的ip和端口等,并拼接代理地址。
代理路徑后帶斜杠時,配置路徑會替代原本的ip和端口等,不拼接代理地址。
location /static/ {
proxy_pass http://ip_two:port_two/abc/;
}在訪問http://ip:port/static/*.*時會映射到http://ip_two:port_two/abc/*.*
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx配置統(tǒng)計流量帶寬請求及記錄實時請求狀態(tài)的方法
這篇文章主要介紹了Nginx中配置統(tǒng)計流量帶寬請求及記錄實時請求狀態(tài)的方法,分別用到了ngx_req_status和ngx_realtime_request模塊,需要的朋友可以參考下2016-01-01

