總結(jié)Nginx 的使用過(guò)程中遇到的問(wèn)題及解決方案
在啟動(dòng) Nginx 的時(shí)候,有時(shí)候會(huì)遇到這樣的一個(gè)錯(cuò)誤:
[emerg]: could not build the proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64
解決辦法就是在配置文件中新增以下配置項(xiàng):
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
這兩個(gè)配置項(xiàng)的 size 根據(jù)系統(tǒng)后端發(fā)送的 header 來(lái)進(jìn)行設(shè)置。
注:默認(rèn)值的話,就會(huì)上面出現(xiàn)上面那樣出現(xiàn)錯(cuò)誤
Nginx 緩存刷新問(wèn)題
在使用 Nginx 的過(guò)程中,因?yàn)?Nginx 本地使用了緩存,然后發(fā)布了靜態(tài)資源后, CDN 回源的時(shí)候,發(fā)現(xiàn)沒(méi)有正?;卦?,經(jīng)過(guò)查詢發(fā)現(xiàn),是因?yàn)?Nginx 本地有緩存,而有沒(méi)有對(duì)緩存進(jìn)行刷新的原因,要刷新本地緩存,可以安裝 Purge 模塊。
Nginx 的緩存設(shè)置:
location /
{
proxy_cache cache_go;
proxy_cache_valid 200 304 1d;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8800;
expires 3024010s;
}
location ~ /purge(/.*)
{
#設(shè)置只允許指定的IP或IP段才可以清除URL緩存。
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_go $host$1$is_args$args;
}
Purge 模塊是用來(lái)清除緩存的,首先下載安裝 Puerge 模塊。
下載 Purge 模塊:
wget http://labs.frickle.com/files/ngx_cache_purge-1.2.tar.gz
解壓:
tar -zxvf ngx_cache_purge-1.2.tar.gz
再編譯前先使用如下命令查看 nginx 的編譯選項(xiàng):
/home/nginx/sbin/nginx -V
nginx version: xxxx
TLS SNI support enabled
configure arguments: --prefix=/home/nginx-1.2.8 --with-pcre=../pcre-8.31 --with-zlib=../zlib-1.2.3 --with-openssl=../openssl-1.0.0d --with-http_ssl_module --with-http_stub_status_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --add-module=../ngx_cache_purge-1.5 --add-module=../perusio-nginx-http-concat-321e344 --add-module=../ngx_http_vipshop_hostname_filter --with-ld-opt=-static
上面我的編譯顯示有 puerge 模塊,是因?yàn)槲乙呀?jīng)編譯過(guò)了,然后在原有的編譯參數(shù)后面加上:
--add-module=/home/ngx_cache_purge-1.5
退出 Nginx ,并重新啟動(dòng):
./nginx -s quit
./nginx
配置 Puerge :
location ~ /purge(/.*)
{
#設(shè)置只允許指定的IP或IP段才可以清除URL緩存。
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_go $host$1$is_args$args;
}
清楚 Nginx 緩存的方式,比如你的 url 是 http://test.com/test/test.js
那清除該 js 緩存的命令即為:
通用的方式就是:
其中 uri 就是你的 URL “http://test.com/test/test.js” 的 “test/test.js” 部分。
相關(guān)文章
Nginx利用Logrotate實(shí)現(xiàn)日志分割的詳細(xì)過(guò)程
nginx日志分割是很常見(jiàn)的運(yùn)維工作,下面這篇文章主要給大家介紹了關(guān)于Nginx利用Logrotate日志分割的詳細(xì)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05Mac中使用Nginx實(shí)現(xiàn)80端口轉(zhuǎn)發(fā)8080端口
端口轉(zhuǎn)發(fā)(Port forwarding),有時(shí)被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個(gè)外部用戶從外部經(jīng)過(guò)一個(gè)被激活的NAT路由器到達(dá)一個(gè)在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個(gè)端口2017-09-09centos7 docker 修改Nginx文件過(guò)程詳解
這篇文章主要介紹了centos7 docker 修改Nginx文件過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08nginx proxy_pass指令’/’使用注意事項(xiàng)
這篇文章主要介紹了nginx代理配置完之后,nginx配置proxy_pass,需要注意轉(zhuǎn)發(fā)的路徑配置,需要的朋友可以參考下2015-02-02Apache和Nginx實(shí)現(xiàn)虛擬主機(jī)的3種方式小結(jié)
Apache是一個(gè)模型化的服務(wù)器,可以運(yùn)行在幾乎所有的服務(wù)器上。其屬于應(yīng)用服務(wù)器,這篇文章主要介紹了Apache和Nginx實(shí)現(xiàn)虛擬主機(jī)的3種方式,需要的朋友可以參考下2023-11-11Nginx出現(xiàn)403?Forbidden的幾種簡(jiǎn)單解決方式
這篇文章主要介紹了Nginx出現(xiàn)403?Forbidden的幾種解決思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈
這篇文章主要為大家介紹了nginx實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11