概述:Nginx是一款由俄羅斯開發的開源的高性能HTTP服務器和反向代理服務器,同時支持IMAP/POP3/SMTP代理服務,其性能優點着爲顯著,官網上稱:單臺nginx服務器能夠處理50000併發;
特色:高性能、穩定、消耗硬件資源小、可以處理大併發,主要用於靜態的解析,動靜頁面的分離;
優點:
1.做爲Web服務器,nginx處理靜態文件、索引文件以及自動索引效率很是高。
2.做爲代理服務器,Nginx能夠實現無緩存的反向代理加速,提升網站運行速度。
3.做爲負載均衡服務器,Nginx既能夠在內部直接支持Rails和PHP,也能夠支持HTTP代理服務器,對外進行服務。同時支持簡單的容錯和利用算法進行負載均衡。html
(1)安裝支持軟件
Nginx的配置以及運行須要pcre、zlib等軟件包的支持。yum install gcc gcc-c++ pcre-devel zlib-devel
(2)建立運行用戶組
Nginx服務程序默認以nobody身份運行,建議建立專門的用戶帳號,以便更準確控制器訪問權限,怎加靈活性,安全、下降風險。useradd -M -s /sbin/nologin nginx
(3)編譯安裝Nginxnginx
root@localhost opt]# cd nginx-1.12.0/ [root@localhost nginx-1.12.0]#./configure \ --prefix=/usr/local/nginx \ #安裝目錄 --user=nginx \ #運行用戶爲Nginx --group=nginx \ #運行組爲Nginx --with-http_stub_status_module #模塊以支持狀態統計,便於查看服務器的信息鏈接 [root@localhost nginx-1.12.0]# make && make install
(4)優化路徑
爲了方便管理,能夠爲主程序ngin建立連接文件,方便直接用nginx命令直接調用nginx主程序c++
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
(5)檢查配置算法
[root@localhost ~]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(6)啓動和中止Nginxvim
[root@localhost ~]# nginx 啓動 [root@localhost ~]# killall -s HUP nginx #重載配置 [root@localhost ~]# killall -s QUIT nginx #中止服務
(6)使用Nginx服務腳本
爲了使用Nginx服務啓動、中止、重載等操做更加方便,並使用chkconfig和service工具來進行管理。緩存
[root@localhost ~]# vim /etc/init.d/nginx #!/bin/bash #chkconfig: - 99 20 description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $PROG ;; stop) kill -s QUIT $(cat $PIDF) ;; reload) $0 stop $0 start ;; restart) kill -s HUP $(cat $PIDF) ;; *) echo "Usage:$0 {start|stop|restart|reload}" ;; esac exit 0 [root@localhost ~]# chmod +x /etc/init.d/nginx [root@localhost ~]# chkconfig --add nginx
1.全局配置安全
#user nobody; #運行用戶 worker_processes 1; #工做進程數量 #error_log logs/error.log; #錯誤日誌 #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #PID文件的位置
2.I/O事件配置
使用「event{}」定界表記,用來指定Nginx的進程的I/O響應模型,每一個進程的鏈接數設置。bash
events { worker_connections 1024; #每一個進程處理4096個鏈接 }
3.HTTP配置
使用「http{}」界定標記包括訪問日誌,HTTP端口、頁面目錄、默認字符集、鏈接保持、以及虛擬Web主機、PHP解析等一系列設置。其中大部分配置語句包含在界定標記「server{}」內服務器
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65;#保持鏈接超時 #access_log logs/access.log main; #gzip on; server { #Web服務的監聽配置 listen 192.168.242.220:80;#監聽地址端口 server_name 192.168.242.220:80;#網站名稱 charset utf-8;#網頁的默認字符集 access_log logs/www.kgc.com.host.access.log;#訪問日誌位置 location / { #根目錄配置 root /var/www/html/kgc; #網站跟目錄的位置 index index.html index.htm;#默認網頁(索引頁) } error_page 500 502 503 504 /50x.html; #內部錯誤的反饋頁面 location = /50x.html { #錯誤頁面配置 root html; } }
3.訪問狀態統計
Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的Web訪問狀況,配置編譯數時能夠怎加--with-http_stub_status_mdule來開啓此模塊支持網絡
location / { stub_status on;#打開狀態統計功能 access_log off;#關閉此位置的日誌記錄 root /var/www/html/kgc; index index.html index.htm; }
基於受權的訪問控制步驟
1.使用htpasswd生成用戶認證文件,若是沒有該命令,可以使用yun安裝httpd-tools軟件包
[root@localhost ~]#htpasswd /usr/local/nginx/passwd.db jiji #在/usr/local/nginx目錄生成passwd.db文件,用戶名爲jiji,密碼輸入兩次。在passwd.db中生成用戶和密碼的密文
2.修改密碼文件的權限爲400,將全部者改成nginx
[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db [root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
3.修改主配置文件nginx.conf 添加相應認證配置項
location / { stub_status on;#打開狀態統計功能 access_log off;#關閉此位置的日誌記錄 root /var/www/html/kgc; index index.html index.htm; auth_basic "secret";#添加認證配置 auth_basci_user_file /usr/loacl/nginx/passwd.db }
基於客戶端的訪問控制
1.deny IP /IP段 :拒絕某個IP或IP段的客戶端
2.allow IP/IP段: 容許某個IP或IP段的客戶端
3.規則從上往下執行,如匹配則中止,再也不往下匹配
location / { stub_status on; access_log off; root /var/www/html/kgc; index index.html index.htm; deny 192.169.10.10; #客戶端IP allow all; }
每一個虛擬Web站點擁有獨立的server{}配置端,各自監聽的ip地址 端口號能夠單獨指定,網絡名稱不一樣
1.基於IP的虛擬主機
2.基於域名的虛擬主機
3.基於端口的虛擬主機
server { #加入www.kgc.com對應的站點 listen 80; server_name www.kgc.com; #監聽地址 charset utf-8; access_log logs/www.kgc.com.host.access.log; location / { root /var/www/html/kgc; #www.kgc.com工做目錄 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { #加入www.accp.com 對應的站點 listen 80; server_name www.accp.com;#監聽地址 charset utf-8; access_log logs/www.accp.com.host.access.log; location / { root /var/www/html/accp; #工做目錄 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
server { listen 192.168.242.220:80; #監聽192.168.242.220 server_name 192.168.242.220:80; charset utf-8; access_log logs/www.kgc.com.host.access.log; location / { root /var/www/html/kgc; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 192.168.242.167:80; server_name 192.168.242.167:80; #監聽192.168.242.167 charset utf-8; access_log logs/www.accp.com.host.access.log; location / { root /var/www/html/accp; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
基於端口
server { listen 192.168.242.220:80; server_name 192.168.242.220:80; charset utf-8; access_log logs/www.kgc.com.host.access.log; location / { root /var/www/html/kgc; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 192.168.242.220:8080; server_name 192.168.242.220:8080; charset utf-8; access_log logs/www.accp.com.host.access.log; location / { root /var/www/html/accp; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }