1. 程式人生 > >windows下Nginx入門練習

windows下Nginx入門練習

一、Nginx的安裝

      1.Nginx下載

        Nginx可以到官網(http://nginx.org/en/download.html)下載,根據自己情況選擇相應的版本,我這裡下載的是window版本的nginx-1.14.0.zip;將其解壓到D盤,解壓後目錄如下:

          

     2.檔案(夾)說明:

           conf:此目錄下一般都是配置檔案,其中最主要的配置檔案為nginx.conf,很多功能都是在這裡面配置。

           html:Nginx靜態資源放置的目錄,此目錄是在nginx.conf中進行配置。

           logs:日誌目錄,同樣在nginx.conf中進行配置。

     3.配置測試:

           在cmd的命令列利用命令nginx.ext -t 可以檢視配置檔案是否正確。

      

     解壓完成後,預設情況下nginx.ext -t是沒問題的。

     4.檔案nginx.conf配置瀏覽

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

             其中#開頭的行是註釋,裡面可以看到一個Server{ ...} 模組是沒有註釋掉的。

    5.Nginx啟動

       Nginx啟動非常簡單,就是執行ext檔案,在cmd的命令列執行 nginx.ext後回車即可,如圖:

       

      命令列啟動後沒有任何輸出資訊。

二、Nginx的功能

   1.虛擬主機

      1.1基於埠的虛擬機器

         Nginx下載解壓並啟動(無需任何修改)後,在瀏覽器中輸入localhost或(localhost:80)就可以看到如下資訊:

           

       我們可以檢視下安裝目錄的nginx-1.14.0\html\index.html這個檔案,當用瀏覽器開啟此檔案後,可以看到,這個檔案其實就是上面顯示的資訊。

       原因解釋:仔細檢視nginx.conf配置檔案,有如下資訊:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

         現在不難理解了,根據配置檔案資訊,Nginx啟動了本地的服務名為localhost,埠為80的服務,請求的資源是html\index.html檔案。

          虛擬埠:我們可以在虛擬一個埠,在nginx.conf中增加如下配置:

   server {
        listen       8081;
        server_name  localhost  ;

        location / {
            root   html-1;
            index  indexTest.html index.htm;
        }
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

當然,需要新建html-1目錄,並在裡面增加indexTest.html(複製html檔案並修改裡面的內容即可),重啟Nginx後,在瀏覽器輸入localhost:8081就可要看到indexTest.html的內容了。

      2.1基於域名的虛擬機器

           2.1.1window配置域名:

                  window中直接在本地檔案中新增域名對映,繞過DNS域名解析伺服器,Nginx是可以訪問虛擬主機的。在檔案C:\Windows\System32\drivers\etc\hosts中新增兩個域名對映關係:

# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
#這是新增部分
127.0.0.1     com.zhangsan.test
127.0.0.1     test.zhangsan.com

            2.1.2在nginx.conf中增加配置如下:

    server {
        listen       8080;
        server_name  com.zhangsan.test  ;

      location / {
            root   html;
            index  index.html index.htm;
        }
    }
    server {
        listen       8080;
        server_name  test.zhangsan.com  ;

        location / {
            root   html-1;
            index  indexTest.html index.htm;
        }
    }

            注:上面服務,埠一樣,服務名是不一樣的(配置的域名),展示頁面不一樣(為了檢視結果)。

          重啟Nginx後,在瀏覽器中分別輸入http://test.zhangsan.com:8080/ 和http://com.zhangsan.test:8080/  ,可以看到兩個顯示的內容分別對應的是指定的html檔案。 

   2.反向代理

1.在本地分別安裝tomcat7和tomcat8,埠分別為8081、8082,啟動兩個空的tomcat。

         2.在nginx.conf中配置反向代理的資訊,如下

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    upstream mytomcat7{
       server 127.0.0.1:8081;
    }

     upstream mytomcat8{
	server 127.0.0.1:8082;
      }
    
    server {
        listen       8080;
        server_name  com.zhangsan.test  ;
        location / {
            proxy_pass http://mytomcat7;
        }
    }
    
     server {
        listen       8080;
        server_name  test.zhangsan.com  ;

        location / {
            proxy_pass http://mytomcat8;
        }
    }
    
      3.重啟Nginx後,在瀏覽器分別輸入http://com.zhangsan.test:8080/和http://test.zhangsan.com:8080/,可以看到,請求的頁面分別是tomcat7和tomcat8的主頁。

   3.負載均衡

1.在上面的配置基礎上,在nginx.conf中配置負責均衡的資訊,如下

 #gzip  on;
    
    upstream mytomcat{
       server 127.0.0.1:8081 weight=1;
       server 127.0.0.1:8082 weight=2;
    }
    
    server {
        listen       8080;
        server_name  com.zhangsan.test  ;

        location / {
            proxy_pass http://mytomcat;
        }
    }
    
     server {
        listen       8080;
        server_name  com.zhangsan.test  ;

        location / {
            proxy_pass http://mytomcat;
        }
    }

       重啟Nginx後,在瀏覽器中多次嘗試請求http://com.zhangsan.test:8080地址,可以看到是也ACCACCACC的方式顯示tomcat7和tomcat8的主頁,其中原因在於我們對8081埠配置了weight=1,對8082埠配置了weight=2,如果取掉weight的配置,這以ACACAC的方式顯示tomcat7和tomcat8的主頁。

以上內容如有不當之處,請各位指正!!!