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的主頁。
以上內容如有不當之處,請各位指正!!!