Nginx 部署 升級 用戶認證 虛擬主機 SSL加密

nginx:俄羅斯人開發的一套輕量級的HTTP服務器,它是一個高性能的HTTP服務器、反向代理服務器同時也是IMAP/POP3/SMTP服務器。它是一套模塊化軟件,根據需求來安裝相應的模塊。


一  源碼安裝部署nginx

1、官網下載nginx源碼包;http://nginx.org(官網)

2、創建用戶(nginx爲了安全需要指定用戶安裝,因爲避免服務器被×××後擁有root權限)

useradd  -s  /sbin/nologin nginx

3、源碼安裝

    (1)、tar解包

    tar  xf  nginx-1.10.3.tar.gz

    (2)、./configure 配置

    cd  nginx-1.10.3

    ./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

    (3)、編譯

    make

    (4)、安裝

    make install

備註: --preifx 指定目錄,--user 指定用戶, --group  指定組  --with-http_ssl_module  支持加密功能  ;具體要安裝要安裝那些模塊需要根據後期要實現什麼功能來定,因爲模塊安裝的越多,空間資源佔用大,漏洞也多,所以需要模塊化安裝。

常用命令:
/usr/local/nginx/sbin/nginx   #啓動

/usr/local/nginx/sbin/nginx   -s  stop     #停止

/usr/local/nginx/sbin/nginx   -s  reload  #重新加載配置文件

/usr/local/nginx/sbin/nginx   -V   #查看nginx安裝信息

爲了後期方便使用需要給nginx做一個軟連接,後期使用命令時就不需要打絕對路徑,直接nginx。

ln -s /usr/local/nginx/sbin/nginx   /sbin

安裝過程中如出現報錯信息,根據報錯信息來查看是否缺少依賴包。(gcc、pcre-devel、openssl-devel)


4、啓動nginx訪問測試

    nginx  #啓動

    netstat  -nutlp  |  grep  80

    firefox  http://nginx服務器地址


netstat命令可以查看系統中啓動的端口信息,該命令常用選項如下:

-a顯示所有端口的信息

-n以數字格式顯示端口號

-t顯示TCP連接的端口

-u顯示UDP連接的端口

-l顯示服務正在監聽的端口信息,如httpd啓動後,會一直監聽80端口

-p顯示監聽端口的服務名稱是什麼(也就是程序名稱)


二  nginx升級

1、官網下載新版本的nginx

2、tar解包

    tar  xf  nginx-1.12.2.tar.gz

3、配置

    ./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

4、編譯

    make

5、備份舊版本nginx,拷貝新版本nginx,並把內存里正在運行的舊版升級

    mv  /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxold  

    cp  /nginx-1.12.2/objs/nginx   /usr/local/nginx/sbin/nginx

    make upgrade  (此命令包含兩層意思:1殺死老版本的軟件,2升級軟件並啓動)

6、檢測

    nginx  -V

備註:在源碼配置編譯安裝時,必須要在源碼包目錄裏進行。


三  用戶認證

客戶端用戶訪問網頁需要輸入用戶名密碼才能訪問網頁。

配置文件解析

vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;   #啓動的進程數量

events {

    worker_connections  1024;   #1個進程允許1024個人訪問

}

    http {

    server {          #在nginx主配置文件裏面一個server代表一個網站;

    listen 80;        #監聽80端口

    server_name localhost;    #網站域名

    root html;     #網站根目錄

    }

    }

1、安裝生成用戶名密碼文件的軟件包httpd-tools

    yum -y install httpd-tools

    htpasswd  -c  /usr/local/nginx/pass tom   #生成叫tom的用戶米和密碼

    New password:        #輸入密碼

    Re-type new password:     #再次輸入密碼

    cat  /usr/local/nginx/pass   #查看用戶名和密碼文件

備註:如果要創建多個用戶,此時需要去掉  -c  選項,因爲-c爲創建的意思,如果不去掉-c當前創建的用戶會直接替換原來的用戶名和密碼

2、修改主配置文件

    在server_name 下面添加兩行關鍵字

    auth_basic  "input youinfo";    #認證提示符

    auth_basic_user_file  "/usr/local/nginx/pass";   #認證密碼文件

3、重新加在nginx

    nginx  -s reload

4、訪問測試

    firefox  http://nginx服務器地址


三  虛擬主機

作用:一臺服務器,一個nginx上面可以運行多個網站

三種類型:基於域名,基於端口,基於ip地址


基於域名的虛擬主機原理:

1、修改配置文件,一個server對應一個網站

vim /usr/local/nginx/conf/nginx.conf

http {

        server {

                    listen 80;    #監聽80端口

                    server_name  www.a.com;  #定義域名

                         charset  utf-8;  #網站支持中文(utf-8) 萬國編碼

                         location  /  {

                                        root   html;   #指定網站根目錄

                                        index  index.html index.htm; }

    }

        server {

                    listen 80;   #監聽80端口

                    server_name  www.b.com;   #定義域名

                    location  /  { 

                                root   www;   #指定網站根目錄

                                index  index.html index.htm; }

    }

}

備註:要實現基於ip或者端口時,直接在配置文件裏面改相應的位置,例如,基於端口  修改listen 8000;   基於ip  修改  listen  192.168.1.2:80  。

另一個網站的頁面文件需要在nginx安裝目錄下創建,要與html同級。

2、創建www文件夾

    mkdir  /usr/local/nginx/www

    在www文件裏面,寫b網站的頁面內容

3、重新加載nginx服務

    nginx  -s  reload


客戶端測試

1、編寫本地域名解析文件

    vim  /etc/hosts

    ip地址       域名    域名

2、打開瀏覽器訪問


四  SSL虛擬主機

通過私鑰和證書對網站進行加密,使用https訪問。

nginx要實現此功能需要安裝 --with-http_ssl_module模塊。

加密算法:

對稱加密:AES、DES 主要應用於單機數據加密,加密和解密的密碼一樣。

非對稱加密:RSA、DSA主要應用於網絡數據加密,加密和解密密碼不一樣。

信息摘要:MD5、sha256,主要應用在數據完整性校驗、數據秒傳等。


1、生成私鑰匙與證書,(私鑰和證書必須放在conf文件下)

    openssl  genrsa  > cert.key   #生成私鑰

    openssl  req  -new  -x509  -key cert.key  > cert.pem   #爲cert.key生成證書

2、修改配置文件

vim /usr/local/nginx/conf/nginx.conf

server {

        listen       443 ssl;

        server_name  www.b.com;


        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   www;

            index  index.html index.htm;

        }

    }

3、重新加載nginx

    nginx  -s  reload

客戶端使用https訪問,會發現地址欄裏的域名旁有個×××的鎖。證明已經完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章