Nginx?proxy、rewrite、alias配置過(guò)程
Nginx proxy、rewrite、alias配置
proxy
一般解決跨域問(wèn)題,使用Nginx進(jìn)行proxy轉(zhuǎn)發(fā),也可以實(shí)現(xiàn)負(fù)載均衡。
# 代理根目錄到內(nèi)部應(yīng)用 location / { proxy_pass http://127.0.0.1:8080; } # 代理模塊到內(nèi)部應(yīng)用,可以帶上后面拼接的路徑,如果訪問(wèn)的是/order 則會(huì)進(jìn)行一次301重定向,讓瀏覽器訪問(wèn)/order/ location /order/ { proxy_pass http://127.0.0.1:8080/; } # 靜態(tài)資源 # 路徑匹配 ^~為普通匹配,沒(méi)有寫也默認(rèn)是普通匹配,所以可以不加 root /www/resources/static/; location ^~ /static/ { root /www/resources/; } # 后綴,文件格式匹配 location ~*\.(gif|jpg|jpeg|png)${ root /www/resources/; }
location 的匹配取最長(zhǎng) 最精確的那條。
rewrite
Nginx的rewrite模塊即ngx_http_rewrite_module標(biāo)準(zhǔn)模塊,主要功能是重寫請(qǐng)求URI,也是Nginx默認(rèn)安裝的模塊。
rewrite regrex replacement [flag]
匹配正則將其中regrex
部分替換成replacement
。而flag則表示替換的程度
last
匹配成功后,其余匹配不執(zhí)行(可以重寫多個(gè))直接用新的URI進(jìn)行下一跳,也會(huì)為新的URI進(jìn)行l(wèi)ocation匹配。break
停止rewrite的相關(guān)指令,但不進(jìn)行l(wèi)ocation跳轉(zhuǎn)。重寫后的請(qǐng)求在一個(gè)location域中跳轉(zhuǎn)。可能會(huì)有人覺(jué)得沒(méi)啥用,但是有些場(chǎng)景就是需要在url上增加一個(gè)參數(shù)但頁(yè)面不做顯式刷新redirect
響應(yīng)請(qǐng)求頭返回302,重寫瀏覽器uri并進(jìn)行臨時(shí)重定向permanent
響應(yīng)請(qǐng)求頭返回301,重寫瀏覽器uri并進(jìn)行永久重定向
為了避免一個(gè)請(qǐng)求經(jīng)過(guò)兩次WAF,又能實(shí)現(xiàn)轉(zhuǎn)向到靜態(tài)頁(yè)面,用了 redirect重定向,讓第二次請(qǐng)求由瀏覽器發(fā)出
location /download { rewrite /download index.html redirect; }
alias
vue的應(yīng)用入口是index.html,打包后,訪問(wèn)nginx的80端口想要出這個(gè)網(wǎng)頁(yè),就需要配置alias
# 將/download請(qǐng)求 別名到/download/index.html頁(yè)面,但是中間會(huì)發(fā)生一次301重定向重新訪問(wèn)/download/ location /download { index index.html; alias /static/; }
靜態(tài)資源別名
# 將/static/的文件都指向nginx 的/resource/static/文件夾 location /static/ { alias /resource/static/; }
Nginx的proxy_pass、root、alias的說(shuō)明
代理配置:
1、root
root配置代理路徑時(shí),會(huì)在代理的地址后拼接配置字段:
location /static { root static/image; }
在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip:port/static/static/image/*.*
2、alias(只能用于location)
alias配置代理路徑時(shí),直接替換代理地址:
location /static { alias static/image; }
在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip:port/static/image/*.*
3、proxy_pass
proxy_pass配置代理路徑時(shí),直接替換整個(gè)代理路徑,包括ip地址的端口等:
location /static { proxy_pass http://ip_two:port_two/static; }
在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip_two:port_two/static/static/*.*
代理路徑后不帶斜杠時(shí),配置路徑會(huì)替代原本的ip和端口等,并拼接代理地址。
代理路徑后帶斜杠時(shí),配置路徑會(huì)替代原本的ip和端口等,不拼接代理地址。
location /static/ { proxy_pass http://ip_two:port_two/abc/; }
在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip_two:port_two/abc/*.*
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
負(fù)載均衡的基本知識(shí)以及使用nginx進(jìn)行負(fù)載均衡的簡(jiǎn)單例子
今天小編就為大家分享一篇關(guān)于負(fù)載均衡的基本知識(shí)以及使用nginx進(jìn)行負(fù)載均衡的簡(jiǎn)單例子,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12Nginx配置統(tǒng)計(jì)流量帶寬請(qǐng)求及記錄實(shí)時(shí)請(qǐng)求狀態(tài)的方法
這篇文章主要介紹了Nginx中配置統(tǒng)計(jì)流量帶寬請(qǐng)求及記錄實(shí)時(shí)請(qǐng)求狀態(tài)的方法,分別用到了ngx_req_status和ngx_realtime_request模塊,需要的朋友可以參考下2016-01-01Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn)
nginx的ssi模塊是一種類似于ASP的基于服務(wù)器的網(wǎng)頁(yè)制作技術(shù),本文主要介紹了Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05nginx的請(qǐng)求轉(zhuǎn)發(fā)配置過(guò)程
Nginx在Windows和Linux環(huán)境下的安裝、啟動(dòng)、停止、配置和請(qǐng)求轉(zhuǎn)發(fā)過(guò)程,配置文件語(yǔ)法檢測(cè)、優(yōu)雅關(guān)閉、熱部署和日志文件重新打開(kāi),配置多個(gè)服務(wù)的請(qǐng)求轉(zhuǎn)發(fā)規(guī)則,修改前端API地址,設(shè)置最大上傳文件大小2024-12-12