快速掌握Nginx(一) —— 安裝Nginx和簡單配置虛擬主機


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;
        }
    }
}
View Code

  這里我們添加了兩台虛擬主機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部分。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM