Nginx安裝和簡單配置虛擬主機
1 Nginx簡介
Nginx是近幾年最火熱的http、反向代理服務器,百度阿里等互聯網公司也都在使用Nginx,它也可以用作郵件代理服務器、TCP/UDP代理服務器等。Nginx功能和Apache相似,其優點主要在於以下幾點:
①高並發響應性能好,官方nginx處理靜態文件並非為5w/s; ②反向代理性能好(可用於負載均衡); ③內存和cpu占用率低(為Apache的1/5~1/10)。
Nginx是由內核和模塊組成,內核設計十分簡潔,實現的功能僅僅是:通過查找配置文件將客戶端請求映射到一個location block(loaction是nginx配置中的一個指令,用於url匹配),location中所配置的每個指令都會啟動不同的模塊去完成相應的工作。
2 Nginx安裝
這里我們把Nginx安裝在Centos虛擬機上,安裝十分簡單,按照下邊的命令即可安裝成功(下載地址不是穩定的,按照需求更改wget后的下載鏈接 ,官方網址http://nginx.org/en/download.html):
#按裝一些工具,pcre用於支持rewrite yum install pcre-devel pcre -y yum -y install openssl openssl-devel #切換到root,下載並解壓 cd /usr/src wget -c http://120.52.51.15/nginx.org/download/nginx-1.14.2.tar.gz tar -xzf nginx-1.14.2.tar.gz cd nginx-1.14.2.tar.gz
#查看配置 ./configure --help
#預編譯,設置用戶wyy1和組wyyy,編譯位置為/usr/local/nginx ,添加兩個http相關模塊 ./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#編譯並安裝 make &&make install
安裝完成后,轉到安裝目錄 cd /usr/local/nginx ,看到Nginx基本結構如下:
通過命令 /usr/local/nginx/sbin/nginx 就可以啟動Nginx,Nginx的默認端口是80,我們在電腦的瀏覽器中輸入虛擬機的IP,如果看到如下界面表示Nginx安裝成功了
幾個Nginx常用的命令
###啟動nginx /usr/local/nginx/sbin/nginx #1.查看配置文件是否有錯誤 /usr/local/nginx/sbin/nginx -t
#2.信號量,-s表示signal #重讀配置文件 /usr/local/nginx/sbin/nginx -s reload #優雅停止nginx /usr/local/nginx/sbin/nginx -s quit #強制停止nginx /usr/local/nginx/sbin/nginx -s stop #重讀日志文件,日志切割時使用 /usr/local/nginx/sbin/nginx -s reopen ###其他 #查看版本號 /usr/local/nginx/sbin/nginx -v #查看預編譯配置(安裝時預編譯的配置) /usr/local/nginx/sbin/nginx -V
3 簡單配置和添加虛擬主機
為了便於理解,我們把 /usr/local/nginx/conf/nginx.conf 配置文件的內容替換為如下內容,server節點下的listen為監聽的端口,Nginx的默認端口是80;server_name是虛擬主機的名字;location表示當接收到一個請求后怎么去映射:默認映射到 /usr/local/nginx/html/ 目錄下的index.html,index.htm文件。我們通過 nginx -s reload 命令重啟Nginx服務器,再次訪問虛擬機IP仍然可以跳轉到Nginx的歡迎界面。
#最簡單的配置 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; #端口 server_name localhost; #主機名 location / { root html; #項目根目錄 index index.html index.htm; #起始頁 } } }
如果我們要使用Nginx部署兩個網站,每個網站都部署在一台虛擬主機上,怎么實現呢?
Nginx添加虛擬主機十分方便,nginx的配置文件中每一個server都表示一個虛擬主機,如果我們想添加一個虛擬主機的話,在配置文件中添加一個server節點,然后執行 /usr/local/nginx/sbin/nginx -s reload 重新加載配置即可。這里我們添加兩台虛擬主機,配置如下:

#最簡單的配置 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #default server server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } #www.mysite1.com server { listen 80; server_name www.mysite1.com; location / { root /usr/local/nginx/html/mysite1/; index index.html index.htm; } } #www.mysite2.com server { listen 80; server_name www.mysite2.com; location / { root /usr/local/nginx/html/mysite2/; index index.html index.htm; } } }
這里我們添加了兩台虛擬主機www.mysite1.com和www.mysite2.com,www.mysite1.com主機對應的網站目錄為 /usr/local/nginx/html/mysite1/ ,該目錄下有index.html文件,內容如下圖。mysite2也是一樣的結構。
在我們的電腦上打開 C:\Windows\System32\drivers\etc 目錄,修改該目錄下的hosts文件,添加兩個DNS映射(簡單說明:添加DNS映射后,輸入www.mysite1.com就會被解析為IP地址192.160.70.132。):
192.168.70.132 www.mysite1.com
192.168.70.132 www.mysite2.com
然后打開瀏覽器訪問www.mysite1.com和www.mysite2.com,結果如下:
我們看到mysite1和mysite2都可以正常訪問,說明我們的添加的虛擬主機可以正常運行。但是這樣有一個問題,如果我們部署了幾十個、甚至幾百個虛擬主機,那么就要在nginx.conf中添加很多的server節點,如果我們想修改其中某一個server節點,查找和修改起來就比較麻煩,而且也容易誤操作。我們可以給每個虛擬主機配置一個配置文件,這樣修改某一個虛擬主機的配置就很方便了。
針對上邊的栗子,首先我們創建目錄 /usr/local/nginx/conf/vhosts ,這個目錄用於存放各個虛擬主機的配置,命令如下:
mkdir /usr/local/nginx/conf/vhosts; cd /usr/local/nginx/conf/vhosts; vim www.mysite1.com;
我們讓配置文件的名字和虛擬主機名一致,如www.mysite1.com虛擬主機的配置文件是 vhosts/www.mysite1.com文件,其內容如下:
#www.mysite1.com server { listen 80; server_name www.mysite1.com; location / { root /usr/local/nginx/html/mysite1/; index index.html index.htm; } }
同樣www.mysite2.com虛擬主機的配置文件就是 vhosts/www.mysite2.com文件,其內容如下:
#www.mysite2.com server { listen 80; server_name www.mysite2.com; location / { root /usr/local/nginx/html/mysite2/; index index.html index.htm; } }
/usr/local/nginx/conf/nginx.conf 配置文件的內容修改如下:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #加載vhosts目錄下所有配置 include vhosts/* ;
執行 /usr/local/nginx/sbin/nginx -s reload 命令重啟nginx,然后訪問www.mysite1.com和www.mysite2.com均可正常訪問。
4 Ngnix平滑升級
最后補充一下Nginx的升級。如果我們想將Ngnix升級到新版本,但是Nginx已經部署了很多的項目,怎么才能升級Ngnix而不影響我們以前部署的項目呢?這里不再多贅述,完整的升級命令如下:
### Nginx升級 pkill-9 ngnix ;
cd /usr/src; #①下載新版本 wget -c http://120.52.51.15/nginx.org/download/nginx-1.xx.xx.tar.gz #②獲取舊版本的配置 /usr/local/nginx/sbin/nginx -V #③解壓安裝包 tar -xzf nginx-1.xx.xx.tar.gz cd nginx-1.xx.x.tar.gz #④預編譯【一定要和舊版本的配置項一致】 ./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module #⑤編譯 make #⑥sbin的nginx替換成新版本的nginx mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old cp /usr/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/nginx
小結:這篇介紹Nginx在Centos上的安裝和最簡單的配置和添加虛擬主機,下一篇介紹location和rewrite部分。