nginx return配置說明


  該指令一般用於對請求的客戶端直接返回響應狀態碼。在該作用域內return后面的所有nginx配置都是無效的。 可以使用在server、location以及if配置中。 除了支持跟狀態碼,還可以跟字符串或者url鏈接。

直接返回狀態碼:

示例1:
server{
    listen 80;
    server_name www.aming.com;
    return 403;
    rewrite /(.*) /abc/$1;  //該行配置不會被執行。
}

示例2:
server {
.....

if ($request_uri ~ "\.htpasswd|\.bak")
{
    return 404;
    rewrite /(.*) /aaa.txt;  //該行配置不會被執行。
}
//如果下面還有其他配置,會被執行。
.....
}

返回字符串:

示例3:
server{
    listen 80;
    server_name www.aming.com;
    return 200 "hello";
}
說明:如果要想返回字符串,必須要加上狀態碼,否則會報錯。
還可以支持json數據

示例4:
location ^~ /aming {
    default_type application/json ;
    return 200  '{"name":"aming","id":"100"}';
}

也支持寫一個變量

示例5:
location /test {
    return 200 "$host $request_uri";
}

返回URL :

示例6:
server{
    listen 80;
    server_name www.aming.com;
    return http://www.aminglinux.com/123.html;
    rewrite /(.*) /abc/$1;  //該行配置不會被執行。
}
注意:return后面的url必須是以http://或者https://開頭的。

實戰示例:

背景:網站被黑了,凡是在百度點擊到本網站的請求,全部都跳轉到了一個賭博網站。
通過nginx解決:
if ($http_referer ~ 'baidu.com') 
{
    return 200 "<html><script>window.location.href='//$host$request_uri';</script></html>";
}

如果寫成:
return http://$host$request_uri; 在瀏覽器中會提示“重定向的次數過多”,因為會被反復跳轉。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM