1. 程式人生 > >nginx配置之虛擬主機和請求分發配置

nginx配置之虛擬主機和請求分發配置

監聽埠

語法:listen address:port [default(deprecated in in 0.8.21)|default_server|[backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ipv6only=[on|off]|ssl]];
預設:listen 80;
作用:listen引數決定Nginx伺服器如何監聽埠。在listen後可以加IP地址,埠和主機名,非常靈活。例如:

listen 127.0.0.1:8000;
listen 127.0.0.1;       //預設80埠
listen 8000;            //
listen *:8000; // listen localhost:8000;

如果伺服器使用IPv6地址,還可以這樣配置:

listen [::]:8000;
listen [fe80::1];
listen [:::a8c9:1234]:80;

在地址和埠後,還可以加其他引數:

listen 443 default_server ssl;
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024

下面說明listen可用引數的意義:
default:將所在得server設為整個web服務的預設server塊。如果沒有這個設定,那麼會以在nginx.conf中找到的第一個server作為預設server。
default_server:同上。
backlog=num:表示TCP中backlog佇列的大小。
rcvbuf=size:設定監聽控制代碼的SO_RECVBUF引數。
sndbuf=size:設定監聽控制代碼的SO_SNDBUF引數。
accept_filter:設定accept過濾器,支隊FreeBSD有用。
deferred:在設定引數後,若使用者發起建立請求,並且完成了TCP的三次握手,核心也不會為這次連線排程worker程序來處理,只有使用者真的傳送資料時(核心已經在網絡卡中收到請求包),核心才會喚醒worker程序處理這個請求。
bind:綁定當前埠、地址對。只有同時對一個埠監聽多個地址時才會生效。
ssl:在當前監聽的埠上建立的連線必須基於SSL協議。

主機名稱

語法:server_name name […]
預設:server_name “”;
配置塊:server;
作用:這是實現虛擬主機的關鍵。

server_names_hash_bucket_size

語法:server_names_hash_bucket_size size;
預設:server_names_hash_bucket_size 32|64|128;
配置塊:http,server,location
作用:為了快速找到相應的server name的能力,Nginx使用散列表來儲存server name。這個設定了桶的大小。

server_names_hash_max_size

語法:server_names_hash_max_size size;
預設:server_names_hash_max_size 512;
配置塊:http,server,location
作用:為了快速找到相應的server name的能力,Nginx使用散列表來儲存server name。這個設定了桶的最大值。

重定向主機名稱的處理

語法:server_name_in_redirect on|off;
預設:server_name_in_redirect on;
作用:需要配合server_name工作,在使用on時,表示在重定向時,用主機列表中的第一個代替原來的host頭部。

location配置