1. 程式人生 > 實用技巧 >Nginx 網站服務——虛擬主機配置

Nginx 網站服務——虛擬主機配置

第1章 Nginx網站服務

1.1 web網站服務介紹:

1.1.1提供靜態服務的軟體

Apache:這是中小型Web服務的主流,Web伺服器中的老大哥。

Nginx:大型網站Web服務的主流,曾經Web伺服器中的初生牛犢,現已長大。

Nginx的分支Tenginehttp://tengine.taobao.org/)目前也在飛速發展。

Lighttpd:這是一個不溫不火的優秀Web軟體,社群不活躍,靜態解析效率很高。在Nginx流行前,它是大併發靜態業務的首選,國內百度貼吧、豆瓣等眾多網站都有Lighttpd奮鬥的身影。

1.1.2提供動態服務的軟體

PHPFastCGI):大中小型網站都會使用,動態網頁語言

PHP程式的解析容器。它可配合Apache解析動態程式,不過,這裡的PHP不是FastCGI守護程序模式,而是mod_php5.somodule)。也可配合Nginx解析動態程式,此時的PHP常用FastCGI守護程序模式提供服務。(.php)

Tomcat:中小企業動態Web服務主流,網際網路Java容器主流(如jspdo)。

Resin:大型動態Web服務主流,網際網路Java容器主流(如jspdo)。

IISInternet information services):微軟windows下的Web服務軟體(如aspaspx

1.2 Nginx web服務部署及說明

1.2.1 Nginx

軟體特點

1. 支援高併發:能支援幾萬併發連線(特別是靜態小檔案業務環境)

2. 資源消耗少:在3萬併發連線下,開啟10Nginx執行緒消耗的記憶體不到200MB

3. 可以做HTTP反向代理及加速快取、即負載均衡功能,內建對RS節點伺服器健康檢查功能,

這相當於專業的Haproxy軟體或LVS的功能。

4. 具備Squid等專業快取軟體等的快取功能。

5. 支援非同步網路I/O事件模型epollnginx-selectapache)(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


image.png


image.png

1.2.5 Nginx站點目錄及首頁檔案概念說明

image.png

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