1. 程式人生 > >Web服務-Nginx

Web服務-Nginx

NMP架構:Nginx+Mysql+php(python)Nginx官方(http://nginx.org,不支援java

比apache效能高,併發高,支援代理

訪問原理:

客戶訪問--->nginx讀取html檔案傳給客戶端--->瀏覽器解釋頁面

    nginx模組化:安裝時需要選擇

依賴包:gcc、pcre、pcre-devel、zlib、zlib-devel、openssl、openssl-devel

Nginx配置檔案及目錄:

/usr/local/nginx/ #安裝目錄

/usr/local/nginx/conf/nginx.conf #主配置檔案,會有一份nginx.conf.default原始

/usr/local/nginx/html #網頁檔案,預設index.html

/usr/local/nginx/logs #日誌檔案

/usr/local/nginxs/sbin/nginx #啟動指令碼

nginx -s stop #停止服務

nginx -s reload #重新載入配置檔案

-V #檢視安裝時使用了什麼引數

   

配置主配置檔案:(/usr/local/nginx/conf/nginx.conf)

使用者認證:

auth_basic "Input pass:"; #新增兩行到server程式碼塊中,埠下一行,提示使用者輸入

auth_basic_user_file "/usr/local/nginx/pass"; #對比使用者輸入與檔案,pss檔案要建立

#yum -y install httpd-tools #安裝

#htpasswd -cm /usr/local/nginx/pass 使用者名稱 #使用軟體生成pass檔案,-c 會覆蓋

> 密碼

加密網站:

生成證書(公鑰)和私鑰:(加密演算法:對稱演算法(AES,DES);非對稱演算法(RSA,DSA;資訊摘要(md5,sha256,sha512))

nginx預設讀取位置:/usr/local/nginx/conf

#openssl genrsa -out my.key #生成私鑰

#openssl req -new -x509 -key my.key -out my.crt #通過私鑰生成證書

依次問:國家(CN),省份,城市,公司名稱,部門,主機,郵箱

配置檔案:/usr/local/nginx/conf/nginx.conf

取消httpsserver程式碼塊的註釋,

ssl_certificate my.crt; #證書

ssl_certificate_key my.key ; #私鑰

注意:訪問時,需要使用https,若無法訪問,清楚瀏覽快取,"md5sum file_name"資訊摘要生成

虛擬主機:【基於域名,基於埠,基於iP:埠前加ipip訪問,顯示第一個

server{ #一個server代表一個虛擬主機

listen 80; #

server_name www.server.com; #域名

location / {

root html; #網頁目錄

index index.html index.htm #首頁名

}

}

排程器(代理服務):(不作快取,,web高可用,負載均衡)

upstream 叢集名 { #新增在http程式碼塊內,server程式碼塊上

server web伺服器ip;

server web伺服器ip;

……

伺服器ip後可用引數:

weight=數字 #權重

max_fails=次數 fail_timeout=秒數 #嘗試連線X次,若失敗,則X秒後再次連線

down #標記宕機

ip_hash; #加在server語句上,相同客戶訪問相同伺服器

}

server {

listen 80;

server_name www.server.com;

location / {

proxy_pass http://叢集名; #如果使用者訪問www.server.com則排程叢集,而不是html中的

root html;

}

}

自帶web檢測,其中一個壞了,則不會訪問,恢復後自動訪問。

地址重寫:(關鍵字寫到location程式碼塊外)

地址重寫就是首先獲得一個進入的URL請求然後把它重新寫成網站可以處理的另一個URL的過程。

地址重寫的優點:

  • 縮短url,隱藏實際路徑提高安全性
  • 易於使用者記憶和鍵入。
  • 易於被搜尋引擎收錄

       配置:

……

location / {

root html;

index index.html index.htm;

}

rewrite 舊的地址 新地址 [redirect];

#地址要使用"/file_name"格式,使用redirect選項,使用者地址會顯示新地址 ,預設不變,目錄有變化時必須使用redirect,否則頁面圖片不能載入

rewrite ^/ http://www.baidu.com; 支援正則,跳轉網站,不論訪問什麼,都轉到百度

rewrite /(.*) http://www.baidu.com/$1 網站域名變化,目錄不變,正則使用$1引用,

或者:不同使用者,返回不同頁面

if ($http_user_agent ~* firefox) { #使用if判斷返回引數($http_user_agent)是否包含hirefox關鍵字,使用~*模糊匹配

rewrite ^/(.*) /firefox/$1; #任何頁面都轉到firefox目錄下

}

注意:在重啟服務時,會埠衝突,殺死程序在開。(netstat -nutlp | grep nginx)

優化:(/usr/local/nginx/conf/nginx.conf)

安全

server_tokens off; #不顯示版本,要新增,在http程式碼塊中

效能:

  • 客戶端提示"too many openfiles ", 提高併發量,linux 最大開啟檔案限制

    worker_processes 數字; #cpu核心數一樣

    worker_connections 數字; #併發量

       

  • 解決客戶端訪問頭部過長:報414錯誤

    原理:客戶端傳送請求頭--->伺服器使用快取儲存請求

    client_header_buffer_size 1k; #最小快取1k,要新增,http程式碼塊中

    large_client_header_buffers 4 4k; #最大快取4個4k

       

  • 客戶端快取:適合長其不變的靜態資料(.jpg,avi,mp3,mp4,flv)[/nginx.conf]

    ……

    server {

    listen 80;

    location ~\.(jpg|png|gif) { #檢查到圖片檔案則快取30天

    expires 30d;

    }

       

    }

    注意:"ctrl+shift+delete"清楚快取

  • 自定義返回404頁面:[ /nginx.conf,有模板]

    error_page 404 /404.html; #當出現404錯誤則顯示404.html,404.html自建立

  • 防止盜鏈:

       

Nginx升級:升級後需要重啟服務

curl命令:測試頁面

curl [引數] http://域名

-I :顯示伺服器響應資料