天天看點

nginx配置虛拟主機

Nginx首先決定一個過來的請求由哪一個server來處理。

就是:我們打開HttpWatch看到的那個HOST值。

server {

        listen       80;

        server_name  nginx.org  www.nginx.org;

        ...

   }  

        server_name  nginx.net  www.nginx.net;

       ...

 }

       listen       80;

       server_name  nginx.com  www.nginx.com;

這樣的話我們就可以配置三個域名。即同一個IP綁定三個域名。如果發現有一個域名均不比對的話就定義出來一個預設的域名

        listen       80 default_server;

        server_name  nginx.net  www.nginx.net;

對于這種域名我們可以這樣來處理

        server_name  www.nginx.net;     //這個值你得填寫一個

        return      444;

基于域名與IP混用的虛拟主機

        listen       192.168.1.1:80;

       listen       192.168.1.2:80;

至此配置完成了有關虛拟機的配置工作!

示例:

Server {

    Listen          80;

    Server_name     nginx.org   www.nginx.org;

    Root            /data/www;      //這個有點相當于resin裡面的root目錄

    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為”/” 表示的是它可以比對任何請求的。

哦!原來location是用來檢驗URI的!

心得與筆記:

    我們的server是配置HOST的即主機。

    Location是配置URI的。

比如:http://www.sina.cn/blog/index.php  那這裡面的HOST就是www.sina.cn

URI就是我們的/blog/index.php值了。

一個“/logo.gif”請求會先和字元location“/”比對,然後再和正規表達式“\.(gif|jpg|png)$”比對,是以,它是被字元location處理的。指令“root /data/www”會使該請求指向一個檔案 “/data/www/logo.gif”,之後這個檔案就會發送到用戶端。

哦原來root的作用其實與resin裡面的document-root是一個概念的!

一個 “/index.php”請求同樣先被字元location “/” 比對,然後才被正規表達式“\.(php)$”比對。是以,它是被字元location所處理的,并且這請求是通過一個監聽在localhost:9000的FastCGI server被處理的. “fastcgi_param” 指令設定FastCGI的參數SCRIPT_FILENAME設定為“/data/www/index.php”, FastCGI server 執行這個檔案. $document_root 變量的值等于 “root” 指令,$fastcgi_script_name 變量等于 URI 請求的值, 也就是 “/index.php”.

筆記:nginx是讓用戶端程式找到檔案的目錄位置。具體如何處理這個得讓後端來處理的

一個 “/about.html”請求隻被字元location“/”比對, 是以,它被這個location處理。使用“root /data/www” 指令的時候,該請求會被轉到 “/data/www/about.html”, 并且檔案會被發送到用戶端。

明白了!

筆記:location是得講個先後順序才行的。即先由 location / 處理讓用戶端找到所需要的檔案。然後再往下找看看是否還有比對的location項如果像php檔案就會有了!

丢給了一個FAST-CGI處理程式

總結:

    我們的server是配置HOST的即主機。多個域名就定義多個虛拟主機即可

Location是多方比對的。示例:

Location    / {

如果我請求一個abc.gif的話是先由第一個UIR定位找到圖檔位置再由第二個URI處理得到過期時間。

當然在location裡面有以下幾個選項。

1、last 基本上用這個。表示已完成了rewrite不再比對後面的規則了

2、break    中止rewrite不再繼續比對

3、redirect 傳回臨時重定向的HTTP狀态302

4、permanent    傳回永久重定向的HTTP狀态301

注意:原有的URL支援正則,重寫的URL不支援正則

        Break;

則後面的過期限制就不生效

手工測試一下:隻處理靜态檔案的情況

站點目錄:

虛拟主機1:目錄放在D:\myweb\proj3 下面

虛拟主機2:目錄放在D:\myweb\proj4 下面

    listen 80; 

    server_name www.aaa.com;   

    root    D:\myweb\proj3;

    location / {       

       index index.html index.htm;

    }

    location ~*\.(gif|jpg|png)$ {

       expires  30d;

 server {

    server_name www.bbb.com;   

    root    D:\myweb\proj4;

繼續閱讀