Nginx 網站服務——虛擬主機配置
第1章 Nginx網站服務
1.1 web網站服務介紹:
1.1.1提供靜態服務的軟體
Apache:這是中小型Web服務的主流,Web伺服器中的老大哥。 Nginx:大型網站Web服務的主流,曾經Web伺服器中的初生牛犢,現已長大。 Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飛速發展。 Lighttpd:這是一個不溫不火的優秀Web軟體,社群不活躍,靜態解析效率很高。在Nginx流行前,它是大併發靜態業務的首選,國內百度貼吧、豆瓣等眾多網站都有Lighttpd奮鬥的身影。 |
1.1.2提供動態服務的軟體
PHP(FastCGI):大中小型網站都會使用,動態網頁語言 Tomcat:中小企業動態Web服務主流,網際網路Java容器主流(如jsp、do)。 Resin:大型動態Web服務主流,網際網路Java容器主流(如jsp、do)。 IIS(Internet information services):微軟windows下的Web服務軟體(如asp、aspx) |
1.2 Nginx web服務部署及說明
1.2.1 Nginx
1. 支援高併發:能支援幾萬併發連線(特別是靜態小檔案業務環境) 2. 資源消耗少:在3萬併發連線下,開啟10個Nginx執行緒消耗的記憶體不到200MB 3. 可以做HTTP反向代理及加速快取、即負載均衡功能,內建對RS節點伺服器健康檢查功能, 這相當於專業的Haproxy軟體或LVS的功能。 4. 具備Squid等專業快取軟體等的快取功能。 5. 支援非同步網路I/O事件模型epoll(nginx)-select(apache)(Linux 2.6+) |
1.2.2 Nginx軟體部署(編譯安裝)
#第一個里程:下載nginx程式軟體包並解壓 mkdir /server/tools -p cd /server/tools wget http://nginx.org/download/nginx-1.14.0.tar.gz tar xf nginx-1.14.0.tar.gz |
#第二個里程:解決軟體依賴問題 yum install openssl-devel pcre-devel -y openssl-devel --- 為了讓nginx服務可以實現https訪問的功能 pcre-devel --- 相容perl語言的正則表示式(^ shell:以什麼開頭 perl:^/) nginx使用時會應用一個引數rewrite 正則表示式資訊(perl) |
#第三個里程:建立worker程序的管理使用者 useradd -s /sbin/nologin -M www |
#第四個里程:編譯安裝軟體過程 #編譯安裝軟體三部曲 #01.進行軟體的配置 mkdir /server/tools -p cd /server/tools cd nginx-1.14.0 ./configure --prefix=/application/nginx-1.14 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module #02.進行軟體的編譯(將各個語言編寫程式碼翻譯成系統可以識別的二進位制資訊) make #03.進行編譯安裝(將軟體最終安裝到系統中) make install |
#重要配置引數總結 --prefix=PATH set installation prefix 設定軟體程式安裝到哪個目錄,指定的目錄不需要創建出來 --user=USER set non-privileged user for worker processes --group=GROUP set non-privileged group for worker processes --with-http_ssl_module enable ngx_http_ssl_module(可以實現https) --with-http_stub_status_module enable ngx_http_stub_status_module(主要用於監控服務執行狀態) |
#第五個里程:建立程式軟連結 ln -s /application/nginx-1.14/ /application/nginx [[email protected] application]# ll /application/nginx-1.14/ total 16 drwxr-xr-x 2 root root 4096 May 16 10:49 conf drwxr-xr-x 2 root root 4096 May 16 10:49 html drwxr-xr-x 2 root root 4096 May 16 10:49 logs drwxr-xr-x 2 root root 4096 May 16 10:49 sbin |
#第六個里程:啟動nginx服務 /application/nginx/sbin/nginx |
1.2.3 Nginx安裝目錄及命令解釋
目錄 | 說明 |
conf | --- 所有nginx相關的配置檔案儲存目錄 |
nginx.conf | --- nginx程式主配置檔案 |
html | --- 表示web服務站點目錄 |
logs | --- 日誌目錄 |
sbin | --- 程式命令儲存目錄 |
Nginx命令引數說明: nginx –help -----查詢nginx的幫助資訊 Options: -?,-h : this help -v : show version and exit 顯示軟體版本資訊並退出 -V : show version and configure options then exit 顯示版本資訊和配置引數資訊並退出 -t : test configuration and exit 配置檔案語法檢查(ansible語法檢查功能) -T : test configuration, dump it and exit 配置檔案語法檢查,將配置檔案資訊顯示出來 -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload 傳送一個訊號給master程序 -p prefix : set prefix path (default: /usr/share/nginx/) -c filename : set configuration file (default: /etc/nginx/nginx.conf) -g directives : set global directives out of configuration file |
1.2.4 Nginx主配置檔案nginx.conf
1.2.5 Nginx站點目錄及首頁檔案概念說明
1.3 Nginx虛擬主機配置
1.3.1虛擬主機的概念
所謂虛擬主機,在Web服務裡就是一個獨立的網站站點,這個站點對應獨立的域名 (也可能是IP或埠),具有獨立的程式及資源目錄,可以獨立地對外提供服務供使用者訪問 這個獨立的站點在配置裡是由一定格式的標籤段標記的,對於Apache軟體來說 一個虛擬主機的標籤段通常被包含在<Virtuallost></VirtualHost>內,而Nginx軟體則 使用一個server{}標籤來標示一個虛擬主機。一個Web服務裡可以有多個虛擬主機標籤 對,即可以同時支援多個虛擬主機站點。 |
1.3.2虛擬主機的型別
·常見的虛擬主機型別有如下幾種。
(1)基於域名的虛擬主機 所謂基於域名的虛擬主機,意思就是通過不同的域名區分不同的虛擬主機,基於域 名的虛擬主機是企業應用最廣的虛擬主機型別,幾乎所有對外提供服務的網站使用的都 是基於域名的虛擬主機,例如:www.etiantian.org。 |
(2)基於埠的虛擬主機 同理,所謂基於埠的虛擬主機,意思就是通過不同的埠來區分不同的虛擬主 機,此類虛擬主機對應的企業應用主要為公司內部的網站,例如:一些不希望直接對 外提供使用者訪問的網站後臺等,訪問基於埠的虛擬主機,地址裡要帶有埠,例如: http://www.etiantian.org:9000。 |
(3)基於IP的虛擬主機 同理,所謂基於IP的虛擬主機,意思就是通過不同的IP區分不同的虛擬主機,此 類虛擬主機對應的企業應用非常少見。一般不同的業務需要使用多IP的場景都會在負 載均衡器上進行VIP繫結,而不是在Web上繫結IP來區分不同的虛擬機器。 |
1.3.3基於域名的虛擬主機配置
第一步:申請域名資訊 先進行購買,域名備案,在申請域名網站上,可以進行A記錄的配置 www.oldboy.com -- 伺服器公網IP地址 |
第二步:編寫配置檔案 ----- nginx.conf server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 80; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } |
第三步:檢查配置檔案語法資訊 nginx -t |
第四步:建立虛擬主機站點目錄,建立虛擬主機首頁檔案 mkdir -p /application/nginx/html/{www,bbs,blog} [[email protected] nginx]# for name in www bbs blog;do echo "10.0.0.7 $name.etiantian.org" >/application/nginx/html/$name/index.html;done [[email protected] nginx]# for name in www bbs blog;do cat /application/nginx/html/$name/index.html;done 10.0.0.7 www.etiantian.org 10.0.0.7 bbs.etiantian.org 10.0.0.7 blog.etiantian.org |
第五步:進行DNS解析(配置hosts) 配置hosts檔案: 01. windows中要進行配置 02. Linux中也要進行配置 |
第六步:配置檔案修改後要進行重啟服務 nginx -s reload |
1.3.4基於埠的虛擬主機配置
第一里程:修改配置檔案 server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 81; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 82; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } |
第二里程:平滑重啟nginx服務 nginx -s reload |
第三里程:進行訪問測試 netstat -lntup|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19363/nginx tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 19363/nginx tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 19363/nginx |
1.3.5基於IP的虛擬主機配置
第一里程:編寫配置檔案,監聽本地網絡卡上有的IP地址 server { listen 10.0.0.7:80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 10.0.0.8:80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } |
第二里程:重啟nginx服務 重點強調:nginx服務配置檔案中只要涉及到IP地址的修改,都要重啟nginx服務,而不是平滑重啟 nginx -s stop && nginx |
第三里程:進行訪問測試 curl 10.0.0.7 curl 10.0.0.8 |
1.4 Nginx常用功能配置
1.4.1規範優化Nginx配置檔案
·目的:每一個虛擬主機都生成一個單獨的配置檔案
第一個里程:建立一個虛擬主機配置檔案儲存目錄 [[email protected] conf]# pwd /application/nginx/conf [[email protected] conf]# mkdir extra |
第二個里程: 生成虛擬主機配置檔案 /application/nginx/conf [[email protected] conf]# sed -n '10,15p' nginx.conf >extra/www.conf [[email protected] conf]# sed -n '16,21p' nginx.conf >extra/bbs.conf [[email protected] conf]# sed -n '22,27p' nginx.conf >extra/blog.conf [[email protected] conf]# cat extra/* server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 80; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } 說明:虛擬主機檔案配置完畢,要將nginx中的虛擬主機配置資訊刪除 |
第三個里程:編寫nginx主配置檔案,載入虛擬主機配置檔案 ---nginx.conf worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include extra/www.conf; include extra/blog.conf; include extra/bbs.conf; } ####也可用 include extra/*; 表示extra目錄下的所有配置檔案。 |
第四個里程:重啟nginx服務 nginx -s reload |
1.4.2配置Nginx服務別名功能(主要用於測試)
#####修改配置檔案 server { listen 80; server_name www.etiantian.org www.et.org; root html/www; index index.html index.htm; } #####檢查語法 nginx -t #####平滑重啟nginx nginx -s reload ####說明:配置別名也需要做好DNS解析 |
1.4.3 Nginx狀態模組頁面配置
Nginx軟體在編譯時有一個with-http_stub_status_module模組,這個模組功能是記錄Nginx的基本訪問狀態資訊,讓使用者瞭解Nginx的工作狀態。要想使用狀態模組,在編譯時必須增加--with-http_stub_status_module引數。 可通過如下方法檢測編譯安裝Nginx時是否設定上述模組支援: |
[[email protected] ~]# nginx -V nginx version: nginx/1.14.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/application/nginx-1.14.0 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module |
第一個里程:編寫配置檔案 # 編寫一個status虛擬主機配置檔案 cp extra/www.conf extra/status.conf server { listen 80; server_name status.etiantian.org; stub_status; #root html/www; #index index.html index.htm; } # 編寫主配置檔案,呼叫status虛擬主機配置檔案 worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include extra/www.conf; include extra/bbs.conf; include extra/blog.conf; include extra/status.conf; } |
第二個里程:重啟nginx服務 nginx -t #--------檢查語法 nginx -s reload ###-------平滑重啟 |
第三個里程:進行DNS解析處理 |
第四個里程:進行測試訪問 [[email protected] ~]# curl status.etiantian.org Active connections: 1 server accepts handled requests 6926 6926 7067 Reading: 0 Writing: 1 Waiting: 0 |
轉載於:https://blog.51cto.com/zhuzhiwei/2121731