Nginx系列教程:faq整理

來源:互聯網
上載者:User
關鍵字 nginx FAQ 系列教程

faq中大部分問題來自HTTP://www.stackoverflow.com與HTTP://www.serverfault.com,有些可能未經過本人驗證。

Nginx如何替換錯誤

Q:能否用503錯誤(負載過高或臨時不可用)來代替502錯誤作為應答返回?
A:配置fastcgi_intercept_errors指令並將其設置為on,然後使用error_page指令:

location / { fastcgi_pass 127.0.0.1:9001; fastcgi_intercept_errors on; error_page 502 =503 /error_page.html; # ...}

Nginx如何重寫404到其他頁面

Q:能否將請求的不存在檔重寫到index.php?
A:使用try_files指令:

try_files $uri $uri/ /index.php

$uri與$uri/將判斷請求的uri是否為一個存在的檔或目錄,如果不是,將被重寫到最後一個參數,即index.php

Nginx如何為代理的請求保存請求的Host頭

Q:當使用nginx的proxy_pass代理一個後端的伺服器(應用)時,如果後端伺服器有多個虛擬主機,代理請求並不能產生正確的應答(nginx發起的請求中沒有Host請求頭),如何解決這個問題?
A:使用proxy_set_header指令設置主機頭:

location / { proxy_pass HTTP://my_app_upstream; proxy_set_header Host $host; # ...}

怎麼配置nginx rewrite,才不會引起瀏覽器url位址重定向?

Q:Apache重寫規則中的P參數代表為強制代理,即使用這個參數可以講一個功能變數名稱重寫到另一個功能變數名稱而不引起瀏覽器網址列的url變化,Nginx中如何實現這一功能?
A:使用rewrite與proxy_pass配合:

location ~ ^/frompath/ { rewrite ^/frompath/(.*)$ /topath/$1 break; proxy_pass HTTP://www.domain.com; }

假如請求為HTTP://www.test.com/frompath/page.php,將被重寫到HTTP://www.domain.com/topath/page.php而不引起瀏覽器網址列中url的變化

如何重寫帶參數的uri?

Q:如何使用Nginx重寫/test.php?id=1&action=delete到/action.php?id=1&action=delete
A:參數保存在變數$query_string中,預設參數會跟在重寫後的url後面,可以在新的規則後面加個問號:

set $query $query_string;rewrite /test.php /action.php?$query?;

如果要求重寫後的參數與重寫前的參數不同,可以針對$query_string變數做正則匹配並配合set設置變數,這樣就可以在重寫規則中使用它們了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.