一:nginx簡介html
Nginx(發音同 engine x)是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,最初供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。 其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好.目前中國大陸使用nginx網站用戶有:新浪、網易、 騰訊,另外知名的微網誌Plurk也使用nginx。前端
Nginx 是一個很牛的高性能Web和反向代理服務器, 它具備有不少很是優越的特性:nginx
做爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率,這點使 Nginx 尤爲受到虛擬主機提供商的歡迎。在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是作虛擬主機生意的老闆們常常選擇的軟件平臺之一. 可以支持高達 50,000 個併發鏈接數的響應, 感謝Nginx爲咱們選擇了 epoll and kqueue 做爲開發模型.web
Nginx做爲負載均衡服務器: Nginx 既能夠在內部直接支持 Rails 和 PHP 程序對外進行服務, 也能夠支持做爲 HTTP代理 服務器對外進行服務. Nginx採用C進行編寫, 不管是系統資源開銷仍是CPU使用效率都比 Perlbal 要好不少. 。Nginx可做爲7層負載均衡服務器來使用。shell
做爲郵件代理服務器: Nginx 同時也是一個很是優秀的郵件代理服務器(最先開發這個產品的目的之一也是做爲郵件代理服務器), Last.fm 描述了成功而且美妙的使用經驗.apache
整體來講nginx的有如下八大優勢:vim
1.高併發鏈接:官方測試能支撐5萬併發鏈接,在實際生產環境中跑到2,~3W併發鏈接。後端
2.內存消耗少:在3W併發鏈接下,開啓的10個NGINX進程才消耗150M內存(15M*10=150M)centos
3.配置文件很是簡單:風格跟程序同樣通俗易懂。瀏覽器
4.成本低廉:Nginx做爲開源軟件,能夠無償使用,而購買F5 BIG-IP、NetScaler
等硬件負載均衡交換機則須要十多萬至幾十萬人民幣。
5.支持rewrite重寫規則:可以根據域名、URL的不一樣,將HTTP請求分發到不一樣的後端服務器羣組。
6.內置的健康檢查功能:若是Nginx Proxy後端的後臺web服務器宕機了,不會音響前端訪問。
7.節省帶寬:支持GZIP壓縮,能夠添加瀏覽器本地緩存的Header頭。
8.穩定性高:用於反向代理,宕機的機率微乎其微。
二:具體配置步驟
//nginx編譯安裝及管理命令
shell> ./configure --prefix=/usr/local/nginx --user=apache --group=apache --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module && make && make install #參數解釋 --prefix=PATH set installation prefix --user=USER set non-privileged user for --group=GROUP set non-privileged group for --with-http_ssl_module enable ngx_http_ssl_module --with-http_stub_status_module enable ngx_http_stub_status_module ---支持監控 --with-http_gzip_static_module enable ngx_http_gzip_static_module ---支持壓縮 #啓動nginx shell> /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #測試nginx配置文件格式是否正確 shell> /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf #關閉nginx shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -TERM #重啓nginx shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -HUP HUP 重啓 TERM,INT 快速中止 USR1 從新打開日誌文件,用於日誌切割 USR2 平滑升級可執行程序 QUIT 從容關閉 WINCH 從容關閉工做進程
//基於IP的虛擬主機
#環境說明 1.centos6.4 IP:10.10.54.157 2.編譯安裝nginx,搭建web服務器,並實現基於IP的虛擬主機 3.一個IP對應一個域名,輸入不一樣的域名DNS解析出不一樣的IP 4.監聽端口:(基於IP) 10.10.54.157:80 www.zijian.com 10.10.54.154:80 bbs.zijian.com 5. shell> ifconfig eth0:0 10.10.54.154 netmask 255.255.255.0 #配置步驟 shell> vim /usr/local/nginx/cong/nginx.conf ------------------------------------------------------ user apache apache; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } http { server { listen 10.10.54.157:80; #這個IP根目錄是/var/www/html server_name 10.10.54.157; charset uft-8; access_log logs/www.access.log main; root /var/www/html; location / { index index.html index.htm; } } server { listen 10.10.54.151:80; #這個IP根目錄是/var/www/bbs server_name 10.10.54.151; access_log logs/bbs.zijian.com.log; root /var/www/bbs; location / { index index.html index.htm; } } } -------------------------------------------------------
//基於域名的虛擬主機並實現代理
#環境說明 1.nginx服務器 IP:10.10.54.157 2.基於域名的服務器,一個IP對應多個域名,使用不一樣的域名訪問不一樣的網站(即不一樣的根目錄) 3.基於域名的nginx web服務器,同一個IP映射多個域名(www.zijian.com,bbs.zijian.com) #配置文件修改 shell> vim /usr/local/nginx/cong/nginx.conf ------------------------------------------------------ http { server { listen 80; #www.zijian.com對應的網站是/var/ww/html server_name www.zijian.com; charset uft-8; access_log logs/www.access.log main; root /var/www/html; location / { index index.html index.htm; } } server { listen 80; #bbs.zijian.com對應的網站是/var/www/bbs server_name bbs.zijian.com; access_log logs/bbs.zijian.com.log; root /var/www/bbs; location / { #當在bbs.zijian.com:80端口監聽到鏈接請求時,經過nginx代理到10.10.54.150:1500上面,固然10.10.54.150:1500必須處於正常監聽狀態 proxy_pass http://10.10.54.150:1500; } } } #瀏覽器輸入:www.zijian.com 時訪問html,輸入bbs.zijian.com 時訪問bbs