Inhaltsverzeichnis
简单且快速的 return
正则表达式 rewrite
http 重定向为 https
统一规范域名
含 www 和 不含 www 之间的重定向
附录
重定向中常用全局变量" >重定向中常用全局变量
nginx 部分常用全局变量
Rewrite正则相关指令详解
Beurteilung der Datei- und Verzeichnisübereinstimmung
Flag-Tag
Heim Betrieb und Instandhaltung Nginx Wie Nginx Informationen umleitet

Wie Nginx Informationen umleitet

Jun 22, 2019 pm 01:13 PM
nginx 重定向

Wie Nginx Informationen umleitet

nginx 是一个灵活且高效的网络服务器,如果想要在nginx服务器中重定,你可以从下面挑选一个适合的方式。

简单且快速的 return

这是一个非常简单的设置方式,只需要个return语句就可以了

return 301 https://example.com$request_uri;
Nach dem Login kopieren
Nach dem Login kopieren

你需要把这段代码放到nginx配置文件的server代码块中,301是永久重定向,你也可以设置成302做一个临时重定向(不建议)。

一个完整的例子:

return 301 https://example.com$request_uri;
Nach dem Login kopieren
Nach dem Login kopieren

正则表达式 rewrite

如果return不能满足你的复杂业务需求,你可以考虑下正则匹配重定向:

rewrite ^/foo/(bar)/(.*)$ https://$server_name/$1/$2 permanent;
Nach dem Login kopieren

同样这也是需要在server代码块中,其中permanent301永久跳转,若需要302可修改为redirect

一个完整的例子:

server {
    listen 80;
    listen [::]:80;
    hostname example.com www.example.com;
    root /var/www/example.com/public;
    rewrite ^/foo/(bar)/(.*)$ $scheme://$server_name/$1/$2 permanent;
}
Nach dem Login kopieren

又如:

server {
    listen       80;
    server_name   www.fangyongle.com  fangyongle.cn;
    if ($host != 'www.fangyongle.com' ) { 
        rewrite ^/(.*)$ https://www.fangyongle.com/$1 permanent; 
    } 
}
Nach dem Login kopieren

再如:

# 根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
    if (-f $request_filename) {
       expires    1h;
       break;
    }
}
Nach dem Login kopieren

使用Maps

如果你有一堆需要重定向的连接映射,你可以考虑在一个地方定义它,然后再通过if来手动判断重定向。

首先定义重定向链接映射redirect-map.conf

map $request_uri $redirect_uri {
    /about.html          /about-us;
    /customers.html      /our-customers;
    /products.html       /our-products;
}
Nach dem Login kopieren

然后在server代码块使用:

include redirect-map.conf;
server {
    […]
    if ( $redirect_uri ) {
        return 301 $redirect_uri;
    }
}
Nach dem Login kopieren

映射也可以有一些语法:

map $request_uri $redirect_uri {
    /about.html          /about-us;
    /customers.html      /our-customers;
    /products.html       /our-products;
    # Match any url that ends in products.html or producs.htm
    ~products\.html?$    /our-products;
    # case-insensitive version of the above
    ~*products\.html?$   /our-products;
    # A named capture that maps
    # e.g. product-1234.html into /products/item-1234/overview
    ~product-(?<sku>\d+)\.html   /products/item-$sku/overview;
}
Nach dem Login kopieren

一些实用的重定向例子

http 重定向为 https

return 301 https://$host$request_uri;
Nach dem Login kopieren

统一规范域名

server_name example.com www.example.com example.net www.example.net _;
if ( $host != $server_name ) {
    return 301 $scheme://$server_name$request_uri;
}
Nach dem Login kopieren

含 www 和 不含 www 之间的重定向

# non-www to www
if ( $host !~ ^www\. ) {
    return 301 $scheme://www.$host$request_uri;
}
Nach dem Login kopieren
# www to non-www
if ( $host ~ ^www\.(?<domain>.+)$ ) {
    return 301 $scheme://$domain$request_uri;
}
Nach dem Login kopieren

附录

重定向中常用全局变量

$scheme       // HTTP方法(如http,https),如:http
$host   // 请求主机头字段,否则为服务器名称,如:blog.fangyongle.com
$server_name   // 服务器名称,如:blog.fangyongle.com
$request_uri   // 包含请求参数的原始URI,不包含主机名,如:/2018/81.html?a=1&b=2
$request_filename  // 当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.htmlnginx 部分常用全局变量
Nach dem Login kopieren

nginx 部分常用全局变量

$remote_addr//获取客户端ip
$binary_remote_addr//客户端ip(二进制)
$remote_port//客户端port,如:50472
$remote_user//已经经过Auth Basic Module验证的用户名
$host//请求主机头字段,否则为服务器名称,如:blog.fangyongle.com
$request//用户请求信息,如:GET ?a=1&b=2 HTTP/1.1
$request_filename//当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.html
$status//请求的响应状态码,如:200
$body_bytes_sent        // 响应时送出的body字节数数量。即使连接中断,这个数据也是精确的,如:40
$content_length       // 等于请求行的“Content_Length”的值
$content_type       // 等于请求行的“Content_Type”的值
$http_referer       // 引用地址
$http_user_agent      // 客户端agent信息,如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
$args     //与$query_string相同 等于当中URL的参数(GET),如a=1&b=2
$document_uri     //与$uri相同  这个变量指当前的请求URI,不包括任何参数(见$args) 如:/2018/81.html
$document_root     //针对当前请求的根路径设置值
$hostname     //如:centos53.localdomain
$http_cookie    //客户端cookie信息
$cookie_COOKIE    //cookie COOKIE变量的值
$is_args//如果有$args参数,这个变量等于”?”,否则等于”",空值,如?
$limit_rate//这个变量可以限制连接速率,0表示不限速
$query_string    // 与$args相同 等于当中URL的参数(GET),如a=1&b=2
$request_body   // 记录POST过来的数据信息
$request_body_file//客户端请求主体信息的临时文件名
$request_method      //客户端请求的动作,通常为GET或POST,如:GET
$request_uri      //包含请求参数的原始URI,不包含主机名,如:/2018/81.html?a=1&b=2
$scheme       //HTTP方法(如http,https),如:http
$uri//这个变量指当前的请求URI,不包括任何参数(见$args) 如:/2018/81.html
$request_completion//如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链串的最后一个时,为空(Empty),如:OK
$server_protocol//请求使用的协议,通常是HTTP/1.0或HTTP/1.1,如:HTTP/1.1
$server_addr//服务器IP地址,在完成一次系统调用后可以确定这个值
$server_name//服务器名称,如:blog.fangyongle.com
$server_port//请求到达服务器的端口号,如:80
Nach dem Login kopieren

Rewrite正则相关指令详解

nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,locationIF条件判断块中,命令格式如下:

rewrite <regex> <replacement> <flag>
Nach dem Login kopieren

正则表达式匹配 

  • ~ ist eine Übereinstimmung, bei der die Groß-/Kleinschreibung beachtet wird.

  • ~* ist eine Übereinstimmung, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird.

  • !~ und !~* sind Nichtübereinstimmungen zwischen Groß- und Kleinschreibung bzw. Nichtübereinstimmung

Beurteilung der Datei- und Verzeichnisübereinstimmung

  • -f und !-f werden verwendet, um festzustellen, ob die Datei vorhanden ist

  • -d und !-d werden verwendet, um festzustellen, ob das Verzeichnis vorhanden ist

  • -e und !-e werden verwendet, um festzustellen, ob eine Datei oder ein Verzeichnis vorhanden ist

  • -x und !-x werden verwendet, um festzustellen, ob eine Datei ausführbar ist

Flag-Tag

  • last – Diese Flagge wird grundsätzlich verwendet.

  • break – Abbruch rewirte, Abgleich nicht mehr fortsetzen

  • redirect – HTTP-Status 302 der temporären Umleitung zurückgeben

  • permanent – Gibt HTTP-Status 301 für permanente Umleitung zurück

Verwenden Sie last und break, um URI rewrite, browse The zu implementieren Die Adressleiste des Servers bleibt unverändert. Und es gibt subtile Unterschiede zwischen den beiden:

  • Bei Verwendung der alias-Direktive müssen Sie das last

  • verwenden Wenn Sie die

    -Direktive verwenden, müssen Sie das proxy_pass-Tag break

  • -Tag verwenden. Nachdem diese last-Regel ausgeführt wurde, erfolgt die Anforderung für das rewrite Das Tag, an dem es sich befindet, wird neu initiiert und das Tag server{......} wird in Sobald der Abgleich dieser Regel abgeschlossen ist, wird der Abgleich beendet. break

Weitere technische Artikel zu Nginx finden Sie in der Spalte Nginx-Tutorial, um mehr zu erfahren!

Das obige ist der detaillierte Inhalt vonWie Nginx Informationen umleitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So lösen Sie Nginx403 So lösen Sie Nginx403 Apr 14, 2025 am 10:33 AM

Wie fixiere ich Nginx 403 Verbotener Fehler? Überprüfen Sie die Datei- oder Verzeichnisberechtigungen; 2.Htaccess -Datei prüfen; 3. Überprüfen Sie die Konfigurationsdatei der Nginx; 4. Starten Sie Nginx neu. Weitere mögliche Ursachen sind Firewall -Regeln, Selinux -Einstellungen oder Anwendungsprobleme.

So lösen Sie Nginx403 -Fehler So lösen Sie Nginx403 -Fehler Apr 14, 2025 pm 12:54 PM

Der Server verfügt nicht über die Berechtigung, auf die angeforderte Ressource zuzugreifen, was zu einem NGINX 403 -Fehler führt. Zu den Lösungen gehören: Überprüfung der Dateiberechtigungen. Überprüfen Sie die Konfiguration .htaccess. Überprüfen Sie die Nginx -Konfiguration. Konfigurieren Sie Selinux -Berechtigungen. Überprüfen Sie die Firewall -Regeln. Fehlerbehebung bei anderen Ursachen wie Browserproblemen, Serverausfällen oder anderen möglichen Fehlern.

So lösen Sie das Problem der Nginx Cross-Domain So lösen Sie das Problem der Nginx Cross-Domain Apr 14, 2025 am 10:15 AM

Es gibt zwei Möglichkeiten, das Problem mit dem Cross-Domain-Problem mit dem NGINX-Problem zu lösen: Änderungen der Cross-Domänen-Antwort-Header: Fügen Sie Anweisungen hinzu, um Cross-Domain-Anforderungen zu ermöglichen, zulässigen Methoden und Header anzugeben und die Cache-Zeit festzulegen. Verwenden Sie das CORS-Modul: Aktivieren Sie Module und konfigurieren Sie die CORS-Regeln, um Cross-Domain-Anforderungen, Methoden, Header und Cache-Zeit zu ermöglichen.

So starten Sie Nginx unter Linux So starten Sie Nginx unter Linux Apr 14, 2025 pm 12:51 PM

Schritte zum Starten von Nginx unter Linux: Überprüfen Sie, ob Nginx installiert ist. Verwenden Sie SystemCTL Start Nginx, um den Nginx -Dienst zu starten. Verwenden Sie SystemCTL aktivieren NGINX, um das automatische Start von NGINX beim Systemstart zu aktivieren. Verwenden Sie den SystemCTL -Status NGINX, um zu überprüfen, ob das Startup erfolgreich ist. Besuchen Sie http: // localhost in einem Webbrowser, um die Standard -Begrüßungsseite anzuzeigen.

So lösen Sie Nginx304 Fehler So lösen Sie Nginx304 Fehler Apr 14, 2025 pm 12:45 PM

Antwort auf die Frage: 304 Nicht geänderter Fehler gibt an, dass der Browser die neueste Ressourcenversion der Client -Anfrage zwischengespeichert hat. Lösung: 1. Löschen Sie den Browser -Cache; 2. Deaktivieren Sie den Browser -Cache; 3. Konfigurieren Sie Nginx, um den Client -Cache zu ermöglichen. 4. Überprüfen Sie die Dateiberechtigungen; 5. Datei Hash prüfen; 6. Deaktivieren Sie CDN oder Reverse Proxy -Cache; 7. Starten Sie Nginx neu.

So konfigurieren Sie Nginx in Windows So konfigurieren Sie Nginx in Windows Apr 14, 2025 pm 12:57 PM

Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

So überprüfen Sie, ob Nginx gestartet wird So überprüfen Sie, ob Nginx gestartet wird Apr 14, 2025 pm 01:03 PM

So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

So überprüfen Sie den laufenden Status von Nginx So überprüfen Sie den laufenden Status von Nginx Apr 14, 2025 am 11:48 AM

Die Methoden zum Anzeigen des laufenden Status von Nginx sind: Verwenden Sie den Befehl ps, um den Prozessstatus anzuzeigen; Zeigen Sie die nginx -Konfigurationsdatei /etc/nginx/nginx.conf an; Verwenden Sie das Nginx -Statusmodul, um den Statusendpunkt zu aktivieren. Verwenden Sie Überwachungstools wie Prometheus, Zabbix oder Nagios.

See all articles