Nginx-4.Nginxがリクエストをどのように処理するか
3171 ワード
テキスト
サーバベースnameの仮想サイト
Nginxは、まず、要求を処理するためにどの最初の80ポートをリスニングorgサイト 2 2 2番目、80ポートを傍受し、netサイト 第3、傍受80ポート、comサイト
ポートが同じであるため、このNginxは、要求ヘッダの
未定義ホストの処理要求を拒否する方法
1つのリクエストに
これはserver_nameは、ホストのない要求に一致する空の文字列として定義され、444ステータスコードが返される.0.8.48以前のバージョン、server_nameは、コンピュータのhostname値をデフォルトで使用します.
server_nameとIPが共存する仮想サイト
比較的複雑な例を見てみましょう.
これ、Nginxはまず、要求されたipとポートがどちらに一致するかをチェックします.その後、
簡単なphpサイト構成
Nginxがphpサイトで要求されたファイルアドレスをどのように決定するかを見てみましょう.
最初の
簡単な例をいくつか挙げます.
サーバベースnameの仮想サイト
Nginxは、まず、要求を処理するためにどの
server
を使用するかを決定する必要がある.簡単な例を挙げると、次のserver
があります.server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
}
ポートが同じであるため、このNginxは、要求ヘッダの
Host
と、どのserver_name
が一致するかを検査する.来たHost
と3つが一致しない場合、または要求にHost
ヘッダがない場合、nginxはデフォルトのserverを使用します.指定されていないのが一番です.default_server
というパラメータで指定することもできます.このパラメータはlisten
命令に属し、server
命令ブロックではない.server {
listen 80 default_server;
server_name example.net www.example.net;
...
}
未定義ホストの処理要求を拒否する方法
1つのリクエストに
Host
がない場合、このリクエストは以下のように定義できます.server {
listen 80;
server_name "";
return 444;
}
これはserver_nameは、ホストのない要求に一致する空の文字列として定義され、444ステータスコードが返される.0.8.48以前のバージョン、server_nameは、コンピュータのhostname値をデフォルトで使用します.
server_nameとIPが共存する仮想サイト
比較的複雑な例を見てみましょう.
listen
命令はipとポートを使用し、異なるserver_name
を定義しています.server {
listen 192.168.1.1:80;
server_name example.org www.example.org;#org
...
}
server {
listen 192.168.1.1:80; #default_server
server_name example.net www.example.net;#net
...
}
server {
listen 192.168.1.2:80;#.2 #default_server
server_name example.com www.example.com;
...
}
これ、Nginxはまず、要求されたipとポートがどちらに一致するかをチェックします.その後、
Host
ヘッダで使用するサーバを決定する.Hostはブラウザのアドレスバーに入力されたアドレスです.192.168があると仮定します.1.1:80来た対www.example.comのリクエストは、いずれかに一致していないため、最初のリクエストが使用されます.また、listenの後にdefault_server
を指定することで変更することもできます.簡単なphpサイト構成
Nginxがphpサイトで要求されたファイルアドレスをどのように決定するかを見てみましょう.
server {
listen 80;
server_name example.org www.example.org;
root /data/www;
location / {
index index.html index.php;
}
location ~* \.(gif|jpg|png)$ {
expires 30d;
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
最初の
location
は/で、すべてに一致するので、優先度が最も低く、Nginxは最も正確なものを探します.Nginxはurl部分のみをチェックし、アドレスの後ろのパラメータは考慮しません.パラメータの順序が定まらないからです.簡単な例をいくつか挙げます.
/logo.gif
は、最初のlocationと一致し、その後も2番目に一致するので、2番目を使用します.root
命令により、具体的には/data/www/logo.gif
ファイルが得られる./index.php
、同様に、最後のlocation命令ブロックを用いる.fastcgi_param
指令吧SCRIPT_FILENAMEは、後の変数、$document_に設定されます.rootはrootの/data/www
,$fastcgi_script_nameはindexです.php、そしてcgi server 9000は/data/www/index.php
というファイルを処理します./about.html
で、最初のlocationのみが一致します./
は、1つ目のみ一致するので、indexを要求する.htmlファイルは、存在しない場合はindexに内部リダイレクトされます.php、そして最後のlocationまで処理します.