Linux命令:nginx安裝配置及基於用戶認證訪問

Nginx經常使用功能php

一、Http代理,反向代理:做爲web服務器最經常使用的功能之一,尤爲是反向代理。css

這裏我給來2張圖,對正向代理與反響代理作個詮釋,具體細節,你們能夠翻閱下資料。html

Nginx在作反向代理時,×××能穩定,而且可以提供配置靈活的轉發功能。Nginx能夠根據不一樣的正則匹配,採起不一樣的轉發策略,好比圖片文件結尾的走文件服務器,動態頁面走web服務器,只要你正則寫的沒問題,又有相對應的服務器解決方案,你就能夠爲所欲爲的玩。而且Nginx對返回結果進行錯誤頁跳轉,異常判斷等。若是被分發的服務器存在異常,他能夠將請求從新轉發給另一臺服務器,而後自動去除異常服務器。mysql

二、負載均衡linux

Nginx提供的負載均衡策略有2種:內置策略和擴展策略。內置策略爲輪詢,加權輪詢,Ip hash。擴展策略,就天馬行空,只有你想不到的沒有他作不到的啦,你能夠參照全部的負載均衡算法,給他一一找出來作下實現。nginx

上3個圖,理解這三種負載均衡算法的實現web

Ip hash算法,對客戶端請求的ip進行hash操做,而後根據hash結果將同一個客戶端ip的請求分發給同一臺服務器進行處理,能夠解決session不共享的問題。 算法

三、web緩存sql

Nginx能夠對不一樣的文件作不一樣的緩存處理,配置靈活,而且支持FastCGI_Cache,主要用於對FastCGI的動態程序進行緩存。配合着第三方的ngx_cache_purge,對制定的URL緩存內容能夠的進行增刪管理。vim

四、Nginx相關地址

源碼:https://trac.nginx.org/nginx/browser

官網:http://www.nginx.org/


Nginx配置文件結構:

若是你下載好啦,你的安裝文件,不妨打開conf文件夾的nginx.conf文件,Nginx服務器的基礎配置,默認的配置也存放在此。

在nginx.conf的註釋符號位#

nginx文件的結構,這個對剛入門的同窗,能夠多看兩眼。

默認的config 

 View Code

nginx文件結構

...              #全局塊


events {         #events塊
   ...
}

http      #http塊
{
    ...   #http全局塊
    server        #server塊
    { 
        ...       #server全局塊
        location [PATTERN]   #location塊
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局塊
}


一、全局塊:配置影響nginx全局的指令。通常有運行nginx服務器的用戶組,nginx進程pid存放路徑,日誌存放路徑,配置文件引入,容許生成worker process數等。

二、events塊:配置影響nginx服務器或與用戶的網絡鏈接。有每一個進程的最大鏈接數,選取哪一種事件驅動模型處理鏈接請求,是否容許同時接受多個網路鏈接,開啓多個網絡鏈接序列化等。

三、http塊:能夠嵌套多個server,配置代理,緩存,日誌定義等絕大多數功能和第三方模塊的配置。如文件引入,mime-type定義,日誌自定義,是否使用sendfile傳輸文件,鏈接超時時間,單鏈接請求數等。

四、server塊:配置虛擬主機的相關參數,一個http中能夠有多個server。

五、location塊:配置請求的路由,以及各類頁面的處理狀況。

如下是對location快的詳細解釋:

語法規則: location [=|~|~*|^~] /uri/ { … }

= 開頭表示精確匹配

^~ 開頭表示uri以某個常規字符串開頭,理解爲匹配 url路徑便可。nginx不對url作編碼,所以請求爲/static/20%/aa,能夠被規則^~ /static/ /aa匹配到(注意是空格)。

~ 開頭表示區分大小寫的正則匹配

~*  開頭表示不區分大小寫的正則匹配

!~和!~*分別爲區分大小寫不匹配及不區分大小寫不匹配 的正則

/ 通用匹配,任何請求都會匹配到。

多個location配置的狀況下匹配順序爲(參考資料而來,還未實際驗證,試試就知道了,沒必要拘泥,僅供參考):

首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,中止匹配,按當前匹配規則處理請求。

例子,有以下匹配規則: view plain copy

  1. location  / {  

  2.    #規則A  

  3. }  

  4. location  /login {  

  5.    #規則B  

  6. }  

  7. location ^~ /static/ {  

  8.    #規則C  

  9. }  

  10. location ~ \.(gif|jpg|png|js|css)$ {  

  11.    #規則D  

  12. }  

  13. location ~* \.png$ {  

  14.    #規則E  

  15. }  

  16. location !~ \.xhtml$ {  

  17.    #規則F  

  18. }  

  19. location !~* \.xhtml$ {  

  20.    #規則G  

  21. }  

  22. location / {  

  23.    #規則H  

  24. }  

那麼產生的效果以下:

訪問根目錄/, 好比http://localhost/ 將匹配規則A

訪問 http://localhost/login 將匹配規則B,http://localhost/register 則匹配規則H

訪問 http://localhost/static/a.html 將匹配規則C

訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規則D和規則E,可是規則D順序優先,規則E不起做用,而 http://localhost/static/c.png 則優先匹配到 規則C

訪問 http://localhost/a.PNG 則匹配規則E, 而不會匹配規則D,由於規則E不區分大小寫。

訪問 http://localhost/a.xhtml 不會匹配規則F和規則G,http://localhost/a.XHTML不會匹配規則G,由於不區分大小寫。規則F,規則G屬於排除法,符合匹配規則可是不會匹配到,因此想一想看實際應用中哪裏會用到。

訪問 http://localhost/category/id/1111 則最終匹配到規則H,由於以上規則都不匹配,這個時候應該是nginx轉發請求給後端應用服務器,好比FastCGI(php),tomcat(jsp),nginx做爲方向代理服務器存在。

因此實際使用中,一般至少有三個匹配規則定義,以下:

 copy

  1. #直接匹配網站根,經過域名訪問網站首頁比較頻繁,使用這個會加速處理,官網如是說。  

  2. #這裏是直接轉發給後端應用服務器了,也能夠是一個靜態首頁  

  3. # 第一個必選規則  

  4. location  / {  

  5.     proxy_pass http://tomcat:8080/index  

  6. }  

  7.    

  8. # 第二個必選規則是處理靜態文件請求,這是nginx做爲http服務器的強項  

  9. # 有兩種配置模式,目錄匹配或後綴匹配,任選其一或搭配使用  

  10. location ^~ /static/ {  

  11.     root /webroot/static/;  

  12. }  

  13. location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {  

  14.     root /webroot/res/;  

  15. }  

  16.    

  17. #第三個規則就是通用規則,用來轉發動態請求到後端應用服務器  

  18. #非靜態文件請求就默認是動態請求,本身根據實際把握  

  19. #畢竟目前的一些框架的流行,帶.php,.jsp後綴的狀況不多了  

  20. location / {  

  21.     proxy_pass http://tomcat:8080/  

  22. }  



如下爲nginx配置文檔nginx.conf的說明:

#user administrator administrators;  #配置用戶或者組,默認爲nobody nobody。
#worker_processes 2;  #容許生成的進程數,默認爲1
#pid /nginx/pid/nginx.pid;   #指定nginx進程運行文件存放地址
error_log log/error.log debug;  #制定日誌路徑,級別。這個設置能夠放入全局塊,http塊,server塊,級別以此爲:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #設置網路鏈接序列化,防止驚羣現象發生,默認爲on
    multi_accept on;  #設置一個進程是否同時接受多個網絡鏈接,默認爲off
    #use epoll;      #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大鏈接數,默認爲512
}
http {
    include       mime.types;   #文件擴展名與文件類型映射表
    default_type  application/octet-stream; #默認文件類型,默認爲text/plain
    #access_log off; #取消服務日誌    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
    access_log log/access.log myFormat;  #combined爲日誌格式的默認值
    sendfile on;   #容許sendfile方式傳輸文件,默認爲off,能夠在http塊,server塊,location塊。
    sendfile_max_chunk 100k;  #每一個進程每次調用傳輸數量不能大於設定的值,默認爲0,即不設上限。
    keepalive_timeout 65;  #鏈接超時時間,默認爲75s,能夠在http,server,location塊。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備
    }
    error_page 404 https://www.baidu.com; #錯誤頁    
    server {
        keepalive_requests 120; #單鏈接請求上限次數。
        listen       4545;   #監聽端口
        server_name  127.0.0.1;   #監聽地址       
        location  ~*^.+$ {       #請求的url過濾,正則匹配,~爲區分大小寫,~*爲不區分大小寫。
           #root path;  #根目錄
           #index vv.txt;  #設置默認頁
           proxy_pass  http://mysvr;  #請求轉向mysvr 定義的服務器列表
          

        } 
    }
}

一、1.$remote_addr 與$http_x_forwarded_for: 用以記錄客戶端的ip地址; 

  2.$remote_user :用來記錄客戶端用戶名稱; 

  3.$time_local : 用來記錄訪問時間與時區;

  4.$request : 用來記錄請求的url與http協議;

  5.$status : 用來記錄請求狀態;成功是200,

  6.$body_bytes_s ent :記錄發送給客戶端文件主體內容大小;

  7.$http_referer :用來記錄從那個頁面連接訪問過來的; 

  8.$http_user_agent :記錄客戶端瀏覽器的相關信息;

二、驚羣現象:一個網路鏈接到來,多個睡眠的進程被同事叫醒,但只有一個進程能得到連接,這樣會影響系統性能。

三、每一個指令必須有分號結束。


安裝步驟:(實驗環境redhat6.0-X64位系統)

一、先下載nginx-1.4.1.tar.gz到服務器

二、解壓縮軟件包

三、建立系統用戶和系統組nginx

四、編譯安裝nginx

[root@lamp ~]# lftp test@10.109.134.247      登陸ftp服務器

Password: 

lftp test@10.109.134.247:/> get nginx-1.4.1.tar.gz  從ftp服務器下載安裝包  

767107 bytes transferred                               

lftp test@10.109.134.247:/> exit

[root@lamp ~]# ls

alldatabases.sql  Desktop    first.sql      Music     Pictures  stu.db 

Documents  install.log     mysql-5.5.28        Public    Templates

cmake-2.8.8    Downloads  install.log.syslog  nginx-1.4.1.tar.gz   nginx-1.4.1  

[root@lamp ~]# tar -xf nginx-1.4.1.tar.gz  解壓縮安裝包 

[root@lamp ~]# ls

alldatabases.sql  Desktop    first.sql      Music     Pictures  stu.db 

Documents  install.log     mysql-5.5.28        Public    Templates

cmake-2.8.8    Downloads  install.log.syslog  nginx-1.4.1.tar.gz nginx-1.4.1 

[root@lamp ~]# du -sh nginx-1.4.1  查看目錄佔用的大小

5.2Mnginx-1.4.1

[root@lamp ~]# groupadd -r -g 108 nginx   建立系統組nginx並指定GID爲108

[root@lamp ~]# useradd -r -u 108 -g 108 nginx  建立系統用戶nginx並指定GID和UID爲108

[root@lamp ~]# rpm -q pcre-devel  查詢pcre-devel模塊是否安裝

package pcre-devel is not installed

[root@lamp ~]# yum -y install pcre-devel  安裝pcre-devel模塊,此模塊爲nginx所依賴的模塊

Loaded plugins: refresh-packagekit, rhnplugin

This system is not registered with RHN.

RHN support will be disabled.

Server                                                                       | 3.7 kB     00:00 ... 

Setting up Install Process

Resolving Dependencies

--> Running transaction check

................

Running Transaction

Warning: RPMDB altered outside of yum.

  Installing     : pcre-devel-7.8-3.1.el6.x86_64            1/1 

Installed:

  pcre-devel.x86_64 0:7.8-3.1.el6                             

Complete!   安裝完成

[root@lamp ~]# cd nginx-1.4.1

[root@lamp nginx-1.4.1]# ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre=/usr --with-file-aio --with-http_p_w_picpath_filter_module   編譯安裝指定安裝路徑--prefix,指定執行命令路徑--sbin-path,指定配置文檔路徑--conf-path,指定錯誤日誌路徑--error-log-path,指定http訪問日誌路徑--http-log-path,指定pid路徑--pid-path等操做。


checking for GD library in /usr/local/ ... not found

checking for GD library in /usr/pkg/ ... not found

checking for GD library in /opt/local/ ... not found


./configure: error: the HTTP p_w_picpath filter module requires the GD library.

You can either do not enable the module or install the libraries.

提示GD庫沒有安裝,沒法支持p_w_picpath filter module模塊,解決方法以下,安裝gd-2.0.35和gd-devel-2.0.35便可。


lftp test@10.109.134.247:/> mget gd-2.0.35-11.el6.x86_64.rpm  gd-devel-2.0.35-11.el6.x86_64.rpm   從ftp服務器上獲取gd和gd-devel的rpm包進行安裝。

[root@lamp ~]# rpm -ivh gd-2.0.35-11.el6.x86_64.rpm 

warning: gd-2.0.35-11.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

   1:gd                     ########################################### [100%]

[root@lamp ~]# rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm 

warning: gd-devel-2.0.35-11.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

   1:gd-devel               ########################################### [100%]

[root@lamp ~]# cd nginx-1.4.1

[root@lamp nginx-1.4.1]# ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre=/usr --with-file-aio --with-http_p_w_picpath_filter_module

checking for OS

 + Linux 2.6.32-71.el6.x86_64 x86_64

checking for C compiler ... found

 + using GNU C compiler

 + gcc version: 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) 

............................................

  nginx configuration prefix: "/etc/nginx"

  nginx configuration file: "/etc/nginx/nginx.conf"

  nginx pid file: "/var/run/nginx/nginx.pid"

  nginx error log file: "/var/log/nginx/error.log"

  nginx http access log file: "/var/log/nginx/access.log"

  nginx http client request body temporary files: "/var/tmp/nginx/client/"

  nginx http proxy temporary files: "/var/tmp/nginx/proxy/"

  nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"

  nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"

  nginx http scgi temporary files: "/var/tmp/nginx/scgi"

#再次執行編譯時,沒有報錯,繼續執行編譯安裝

[root@lamp nginx-1.4.1]# make    安裝時報錯,需取消編譯安裝時--with-pcre的指定路徑

make -f objs/Makefile

make[1]: Entering directory `/root/nginx-1.4.1'

cd /usr \

&& if [ -f Makefile ]; then make distclean; fi \

&& CC="cc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \

./configure --disable-shared 

/bin/sh: line 2: ./configure: No such file or directory

make[1]: *** [/usr/Makefile] Error 127

make[1]: Leaving directory `/root/nginx-1.4.1'

make: *** [build] Error 2

[root@lamp nginx-1.4.1]# make clean   清空編譯緩存

[root@lamp nginx-1.4.1]# ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --with-file-aio --with-http_p_w_picpath_filter_module   **此處不指定--with-pcre路徑,再次編譯  

 .........................

  nginx path prefix: "/usr"

  nginx binary file: "/usr/sbin/nginx"

  nginx configuration prefix: "/etc/nginx"

  nginx configuration file: "/etc/nginx/nginx.conf"

  nginx pid file: "/var/run/nginx/nginx.pid"

  nginx error log file: "/var/log/nginx/error.log"

  nginx http access log file: "/var/log/nginx/access.log"

  nginx http client request body temporary files: "/var/tmp/nginx/client/"

  nginx http proxy temporary files: "/var/tmp/nginx/proxy/"

  nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"

  nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"

  nginx http scgi temporary files: "/var/tmp/nginx/scgi"  編譯完成

[root@lamp nginx-1.4.1]# make   #執行make 

objs/src/http/modules/ngx_http_flv_module.o \

objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \

objs/src/http/modules/ngx_http_upstream_least_conn_module.o \

objs/src/http/modules/ngx_http_upstream_keepalive_module.o \

objs/src/http/modules/ngx_http_stub_status_module.o \

objs/ngx_modules.o \

-lpthread -lcrypt -lpcre -lssl -lcrypto -ldl -lz -lgd

make[1]: Leaving directory `/root/nginx-1.4.1'

make -f objs/Makefile manpage

make[1]: Entering directory `/root/nginx-1.4.1'

sed -e "s|%%PREFIX%%|/usr|" \

-e "s|%%PID_PATH%%|/var/run/nginx/nginx.pid|" \

-e "s|%%CONF_PATH%%|/etc/nginx/nginx.conf|" \

-e "s|%%ERROR_LOG_PATH%%|/var/log/nginx/error.log|" \

< man/nginx.8 > objs/nginx.8

make[1]: Leaving directory `/root/nginx-1.4.1'    編譯完成

[root@lamp nginx-1.4.1]# make install

make -f objs/Makefile install

make[1]: Entering directory `/root/nginx-1.4.1'

test -d '/usr' || mkdir -p '/usr'

test -d '/usr/sbin' || mkdir -p '/usr/sbin'

test ! -f '/usr/sbin/nginx' || mv '/usr/sbin/nginx' '/usr/sbin/nginx.old'

cp objs/nginx '/usr/sbin/nginx'

test -d '/etc/nginx' || mkdir -p '/etc/nginx'

cp conf/koi-win '/etc/nginx'

cp conf/koi-utf '/etc/nginx'

cp conf/win-utf '/etc/nginx'

test -f '/etc/nginx/mime.types' || cp conf/mime.types '/etc/nginx'

cp conf/mime.types '/etc/nginx/mime.types.default'

test -f '/etc/nginx/fastcgi_params' || cp conf/fastcgi_params '/etc/nginx'

cp conf/fastcgi_params '/etc/nginx/fastcgi_params.default'

test -f '/etc/nginx/fastcgi.conf' || cp conf/fastcgi.conf '/etc/nginx'

cp conf/fastcgi.conf '/etc/nginx/fastcgi.conf.default'

test -f '/etc/nginx/uwsgi_params' || cp conf/uwsgi_params '/etc/nginx'

cp conf/uwsgi_params '/etc/nginx/uwsgi_params.default'

test -f '/etc/nginx/scgi_params' || cp conf/scgi_params '/etc/nginx'

cp conf/scgi_params '/etc/nginx/scgi_params.default'

test -f '/etc/nginx/nginx.conf' || cp conf/nginx.conf '/etc/nginx/nginx.conf'

cp conf/nginx.conf '/etc/nginx/nginx.conf.default'

test -d '/var/run/nginx' || mkdir -p '/var/run/nginx'

test -d '/var/log/nginx' || mkdir -p '/var/log/nginx'

test -d '/usr/html' || cp -R html '/usr'

test -d '/var/log/nginx' || mkdir -p '/var/log/nginx'

make[1]: Leaving directory `/root/nginx-1.4.1'   編譯安裝完成

爲nginx提供系統腳本,腳本內容以下:

新建文件/etc/rc.d/init.d/nginx內容以下:

******************************************************************

[root@lamp nginx-1.4.1]# vim /etc/rc.d/init.d/nginx

#!/bin/bash

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse

#         proxy and IMAP/POP3 proxy server

# processname: nginx

# config:   /etc/nginx/nginx.conf

# config:   /etc/sysconfig/nginx

# pidfile:  /var/run/nginx.pid

 

# Source function library

 . /etc/rc.d/init.d/functions


# Source networking configuration.

 . /etc/sysconfig/network

 

# Check that networking is up.

 [ "$NETWORKING" = "no" ] && exit 0

 

 nginx="/usr/sbin/nginx"

 prog=$(basename $nginx)

 

 NGINX_CONF_FILE="/etc/nginx/nginx.conf"

 

 [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

 

 lockfile=/var/lock/subsys/nginx

 

 make_dirs() {

   # make required directories

   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

 for opt in $options; do

    if [ `echo $opt | grep '.*-temp-path'` ]; then

      value=`echo $opt | cut -d "=" -f 2`

       if [ ! -d "$value" ]; then

        # echo "creating" $value

        mkdir -p $value && chown -R $user $value

       fi

     fi

 done

}


start() {

   [ -x $nginx ] || exit 5

   [ -f $NGINX_CONF_FILE ] ||exit 6

   make_dirs

   echo -n $"Starting $prog: "

   daemon $nginx -c $NGINX_CONF_FILE

   retval=$?

   echo

   [ $retval -eq 0 ] && touch $lockfile

   return $retval

}

 

stop() {

   echo -n $"Stopping $prog: "

   killproc $prog -QUIT

   retval=$?

   echo

    [ $retval -eq 0 ] && rm -f $lockfile

    return $retval

}


restart() {

   configtest || return $?

   stop 

   sleep 1

   start

}


reload() {

   configtest || return $?

   echo -n $"Reloading $prog: "

   killproc $nginx -HUP

   RETVAL=$?

   echo

}


force_reload() {

  restart

}


  configtest() {

  $nginx -t -c $NGINX_CONF_FILE

}


  rh_status() {

  status $prog

}

 

  rh_status_q() {

  rh_status >/dev/null 2>&1

}

 

  case "$1" in

    start)

      rh_status_q && exit 0

      $1

      ;;

    stop)

      rh_status_q || exit 0

      $1

      ;;

    restart|configtest)

      $1

      ;;

    reload)

      rh_status_q || exit 7

      $1

      ;;

    force-reload)

      force_reload

      ;;

    status)

      rh_status

      ;;

    condrestart|try-restart)

      rh_status_q || exit 0

      ;;

    *)

   echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

      exit 2

      ;;

esac

*****************************************************************************

然後爲此腳本賦予執行權限:

chmod +x /etc/rc.d/init.d/nginx

[root@lamp nginx-1.4.1]# chmod +x /etc/rc.d/init.d/nginx 

[root@lamp nginx-1.4.1]# chkconfig --add nginx  #增長到開機運行列表

[root@lamp nginx-1.4.1]# chkconfig nginx on  啓用開機運行nginx

[root@lamp nginx-1.4.1]# chkconfig --list nginx

nginx          0:off1:off2:on3:on4:on5:on6:of

[root@lamp nginx-1.4.1]# service nginx start

Starting nginx:                       [  OK  ]

而後經過瀏覽器訪問該IP地址便可:

wKioL1mBg76xizuQAAOVwpxREzI932.jpg

實例:測試nginx基於用戶訪問控制

首先需安裝httpd服務,可是千萬不要開啓httpd服務,只是提供htpasswd用戶認證文件生成的功能,因此需關閉httpd服務,且不能讓其自動啓動,安裝httpd直接用yum -y install httpd 安裝後經過htpasswd生成用戶密碼訪問文件。

[root@lamp usr]# chkconfig --list httpd  #查詢httpd是否開機啓動,確保開機不會自動啓動,且確保該httpd服務處於關閉狀態。

httpd          0:off1:off2:off3:off4:off5:off6:off

[root@lamp usr]# service httpd status #查詢httpd服務狀態

httpd is stopped

[root@lamp usr]# htpasswd -c -m /etc/nginx/.user_file tom  #第一次生成用戶時需-c參數

New password: 

Re-type new password: 

Adding password for user tom

[root@lamp usr]# htpasswd  -m /etc/nginx/.user_file jerry #第二次及之後生成用戶時不能使用-c參數,請牢記。

New password: 

Re-type new password: 

Adding password for user jerry

生成用戶訪問控制文件後,編輯nginx.conf配置文檔進行相關修改:

[root@lamp usr]# vim /etc/nginx/nginx.conf  #編輯配置文檔在須要經過訪問控制的主機的location中添加控制功能的選項,以下紅色框內。

wKiom1mFFc2ANu6YAAD-snu2qQE852.jpg

[root@lamp usr]# service nginx restart

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Stopping nginx:                                     [  OK  ]

Starting nginx:                                     [  OK  ]

訪問提示須要用戶名和密碼

wKiom1mCt5qBNRbWAAK05b41mPg999.jpg








nginx-1.4.1.tar.gz下載地址:http://nginx.org/download/

gd-devel-2.0.35下載地址:http://download.csdn.net/detail/fhqsse220/6828701

gd-2.0.35下載地址:http://rpmfind.net/linux/rpm2html/search.php?query=gd&submit=Search+...

相關文章
相關標籤/搜索