1. 程式人生 > >淺談Nginx服務器的安裝,升級、配置、LNMP平臺搭建、nginx+fastcgi、nginx高級技術-地址重寫及優化

淺談Nginx服務器的安裝,升級、配置、LNMP平臺搭建、nginx+fastcgi、nginx高級技術-地址重寫及優化

perl 新的 大文件 文件的 add 並發連接數 文件配置 redirect ntp

Nginx服務器:是俄羅斯人編寫的十分輕量級的HTTP服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP代理服務器

一、安裝Nginx軟件:

準備工作:搭建gccpcre-developenssl-devel環境 yum -y install gcc gcc-c++ make pcre-devel openssl-devel

第一步:創建nginx用戶 useradd nginx

第二步:解壓nginx tar -zxvf nginx....tar.gz

第三步:進目錄清單配置cd nginx...------>./configure

常用參數:--prefix=/usr/local/nginx //指定安裝目錄--with-http_ssl_module //指定安全加密

第四步:編譯及安裝 make && make install

安裝完成之後就會有Nginx安裝目錄:/usr/local/nginx/,這個目錄下會有主配置文件、網頁目錄、日誌文件和啟動腳本

主配置文件:/usr/local/nginx/conf/nginx.conf 網頁目錄:/usr/local/nginx/html/(可自定義)

日誌文件:/usr/local/nginx/logs 啟動腳本:/usr/local/nginx/sbin/nginx

啟動nginx服務:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

常用選項:-v查看nginx版本 -V查看編譯參數 -t測試默認配置文件 -c指定配置文件 -s停止nginx服務(接reload重新加載主配置文件)

啟動完服務之後查看服務相關進程及端口信息 ps aux | grep nginx 或者 netstat -autpul | grep nginx

二、在不停止服務的情況下平滑升級Nginx

第一步:解壓新nginx包,刪除源解壓包 tar -zxvf nginx....tar.gz

第二步:進目錄清單配置cd nginx...------>./configure

常用參數:--prefix=/usr/local/nginx //指定安裝目錄 --with-http_ssl_module //指定安全加密

第三步:編譯 make

第四步:將老nginx腳本改名並拷貝新的nginx腳本進來

1)mv /usr/local/nginx/sbin/nginx nginxold

2)cp nginx /usr/local/nginx/sbin/

第五步:在目錄升級軟件並查看

1)make upgrade

2)/usr/local/nginx/sbin/nginx -v

三、Nginx配置

整個nginx配置文件的結構是:http{ server{ location / {} } }

nginx配置文件裏的全局選項:

user nginx; //進程所有者

worker_processes 1; //啟動進程數量

error_log /var/log/nginx/error.log; //日誌文件

pid /var/run/nginx.pid; //PID文件

events {

worker_connections 1024; //單個進程最大並發量

}

nginx配置文件裏的配制容器:

http{

server{ //定義虛擬主機

listen 80;

server_name localhost;

location / {

root html; //網頁根目錄

index index.html index.htm; //網頁文件

}

}

}

nginx用戶認證:

第一步:修改nginx主配置文件/usr/local/nginx/conf/nginx.conf,在配置容器下添加參數

技術分享

第二步:在命令行創建用戶名密碼htpasswd -cm /usr/local/nginx/pass.txt 用戶名

(需安裝httpd-tools包,第二次創建用戶名時無需-c,否則會覆蓋)yum -y install httpd-tools

Nginx虛擬主機配置

三種模式虛擬主機:基於域名、端口、IP的虛擬主機

http{

server{ //定義虛擬主機

listen 80; //基於端口

#listen IP80 //基於IP

server_name localhost; //基於域名

location / {

root html; //網頁根目錄

index index.html index.htm; //網頁文件

}

}

}

SSL虛擬主機配置(SSL加密網站的核心技術是非對稱生成密鑰)

部署SSL虛擬機主機:

第一步:進入/usr/local/nginx/conf目錄生成私鑰(自定義)

openssl genrsa > my.key 或者 openssl genrsa -out my.key 2048

第二步:進入/usr/local/nginx/conf/目錄生成證書(自定義)

openssl req -new -x509 -key my.key -out my.crt

第三步:修改配置文件/usr/local/nginx/conf/nginx.conf,添加證書密鑰參數

技術分享

Nginx反向代理配置(在nginx主配置文件配置容器裏指定)

技術分享

Nginx負載分配方式配置:目前支持4種分配方式

輪詢(默認的):逐一循環調度,比例1:1

Weight:指定輪詢幾率,權重值和訪問比率成正比

ip_hash:根據客戶端IP分配固定的後端服務器

服務器組主機狀態配置:

down:表示當前server暫時不參與負載

max_fails:允許請求失敗的次數(默認為1

fail_timeoutmax_fails次失敗後,暫停提供服務的時間

backup:備份服務器

技術分享

四、LNMP平臺搭建(LLinux操作系統 NNginx網站服務軟件 MMySQLMariaDB數據庫 P:網站開發語言(PHPPerlPython))

第一步:裝Nginxmariadbmariadb-servermariadb-develphpphp-mysqlphp-fpm

yum -y install mariadbmariadb-servermariadb-develphpphp-mysql

yum localinstall php-fpm....rpm

第二步:起nginxmariadbphp-fpm服務

nginx -c /usr/local/nginx/conf/nginx.conf systemctl start mariadbphp-fpm

第三步:查看nginxmariadbphp-fpm服務狀態

nginxnetstat -antpul | grep 80

mariadbnetstat -antpul | grep 3306

php-fpmnetstat -antpul | grep 9000

五、Nginx+FastCGI

FastCGI簡介:是一種常駐型的CGI,將CGI解釋器進程保持在內存中,進行維護與調度,FastCGI技術目前支持語言有PHPC/C++JavaPerlPythonRuby

工作原理:(進入nginx主配置文件/usr/local/nginx/conf/nginx.conf配置容器設置)

1Web Server啟動時載入FastCGI進程管理器

2FastCGI進程管理器初始化,啟動多個解釋器進程

3,當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個解釋器

4FastCGI子進程完成處理後返回結果,將標準輸出和錯誤信息從同一連接返回Web Server

技術分享

技術分享

FastCGI缺點:內存消耗大,因為是多進程,所以比CGI多線程消耗更多的服務器內存,PHP-CGI解釋器每進程消耗725兆內存,將這個數字乘以50100就是很大的內存數;Nginx+PHPFastCGI)服務器在3萬並發連接下開10Nginx進程消耗150M內存(10*15M),開64php-cgi進程消耗1280M內存(20M*64

六、Nginx高級技術-地址重寫

地址重寫:獲得一個來訪的URL請求,然後改寫成服務器可以處理的另一個URL的過程

地址重寫好處:縮短URL,隱藏實際路徑提高安全性,易用戶記憶和鍵入,搜索引擎收錄

常見網站應用場景:當網站文件移動或文件目錄名稱發生改變,出於SEO需要,你需要保持舊的URL,網站改版了,網站導航和鏈接發生變化,為了繼續持有原鏈接帶來的流量,需要保持舊的URL

rewrite語法:rewrite 舊地址 新地址 flag(breaklastredirectpermanent)

break:停止執行其他的重寫規則,完成本次請求

last:停止執行其他重寫規則,根據URL繼續搜索其他location,地址欄不改變

redirect302臨時重定向,地址欄改變,爬蟲不更新URL

permanent301永久重定向,地址欄改變,爬蟲更新URL

應用示例:(修改nginx主配置文件/usr/local/nginx/conf/nginx.conf配置容器裏的location參數,添加rewrite規則)

1,頁面文件跳轉 /a.html--------->/b.html

技術分享

2,網站域名跳轉 192.168.4.5---->www.baidu.com

寫在location內對根文件夾生效,寫在location外對所有文件生效

rewrite ^/(.*) http://www.baidu.com/$1; //網站域名跳轉

3,不同的人訪問相同的鏈接,出來的版式不一樣,根據瀏覽器返回不同的頁面

寫在location內是死循環(報錯http500),寫在location外是正常

技術分享

4,訪問的資源不存在時,重定向到指定頁面

if(!-e $request_filename){

rewrite ^/ http://域名/文件;

}

七、nginx優化

如何優化:修改nginx主配置文件(vim /usr/local/nginx/conf/nginx.conf)

worker_processes 2; //CPU核心數量一致

error_log /var/log/nginx.error_log [debug/info/notice/warn/error/crit]; //定義日誌級別

events{

worker_connections 65536; //每個worker最大並發連接數

//最大的連接數=CPU核心數量*最大並發連接數

//由於操作系統的文件數量未限制,需修改ulimit限制/etc/security/limits.conf

查看配置好的參數:ulimit -a

臨時限制:ulimit -Hn/Sn 最大文件數量; 如ulimit -Hn/Sn 100000;

永久限制:vim /etc/security/limits.conf------->* hard/sort nofile 100000

}

http{

server_tokens off; //不顯示Nginx具體版本號

client_header_buffer_size 1k; //默認請求包頭信息的緩存

large_client_header_buffers 4 4k(工作需要); //大請求包頭部信息的緩存個數與容量

//先根據client_header_buffer分配,如果不夠,再根據large值分配

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

expires 30d; //為客戶端瀏覽器緩存數據30

}

}

淺談Nginx服務器的安裝,升級、配置、LNMP平臺搭建、nginx+fastcgi、nginx高級技術-地址重寫及優化