本文主要圍繞下面幾個點進行敘述。
1、什么是nginx?
Nginx (engine x) 是一款輕量級的Web 服務器 、反向代理服務器及電子郵件(IMAP/POP3)代理服務器。
2、什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。
關於反向代理,網上還有很多資料可以幫助理解。
3、window與Linux上的安裝
簡單說一下window上的安裝,Linux上的后面補充。
首先下載地址:http://nginx.org/en/download.html
我現在的版本是nginx/Windows-1.10.2,找個位置,解壓,來簡單說明一下解壓下的文件目錄:
其他的就不介紹,說一下用的主要的倆文件,conf下是一些配置文件,logs中是一些日志文件。
我解壓的路徑是D:\yh,以為這個路徑說明,進入\nginx-1.10.2文件夾下,shift+鼠標右鍵,進入命令窗口,如圖:
下面介紹window下我使用比較多的幾個命令。
4、nginx常用的幾個命令
進入如上命令窗口后,start nginx,就可以啟動nginx,不放心嗎?你可以到任務管理中查看一下。
當修改了配置文件后,需要重新reload,命令是 nginx -s reload,這個命令也很常用,當然還有其他命令,如下
nginx -s stop 快速關閉Nginx,可能不保存相關信息,並迅速終止web服務。
nginx -s quit 平穩關閉Nginx,保存相關信息,有安排的結束web服務。
nginx -s reopen 重新打開日志文件。
nginx -c filename 為 Nginx 指定一個配置文件,來代替缺省的。
nginx -t 不運行,而僅僅測試配置文件。nginx 將檢查配置文件的語法的正確性,並嘗試打開配置文件中所引用到的文件。
nginx -v 顯示 nginx 的版本。
nginx -V 顯示 nginx 的版本,編譯器版本和配置參數。
記得使用命令啟動nginx或者重新reload的時候,可參考logs下的幾個日志文件。
5、結合項目進行實際配置
其實我配置nginx僅僅是為了完成http的反向代理,這里沒有復雜的配置,想使用自己配置的域名進行訪問我的項目【拋棄localhost:9090】,至於使用 nginx做負載均衡,等后面配置到了再在博文的補充完善。
conf/nginx.conf配置如下:
#運行的用戶 #user nobody; #啟動進程,通常設置成和cpu的數量相等 worker_processes 1; #全局錯誤日志 error_log D:/yh/nginx-1.10.2/logs/error.log; error_log D:/yh/nginx-1.10.2/logs/notice.log notice; error_log D:/yh/nginx-1.10.2/logs/info.log info; #PID文件,記錄當前啟動的nginx的進程ID pid D:/yh/nginx-1.10.2/logs/nginx.pid; #工作模式及連接數上限 events { worker_connections 1024; #單個后台worker process進程的最大並發鏈接數 } #設定http服務器,利用它的反向代理功能提供負載均衡支持 http { #設定mime類型(郵件支持類型),類型由mime.types文件定義 include D:/yh/nginx-1.10.2/conf/mime.types; default_type application/octet-stream; #設定日志 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log D:/yh/nginx-1.10.2/logs/access.log main; #sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出文件,對於普通應用, #必須設為 on,如果用來進行下載等應用磁盤IO重負載應用,可設置為 off,以平衡磁盤與網絡I/O處理速度,降低系統的uptime. sendfile on; #tcp_nopush on; #連接超時時間 #keepalive_timeout 0; keepalive_timeout 120; #gzip壓縮開關 #gzip on; #設定實際的服務器列表 upstream server1{ server 127.0.0.1:9090; } #HTTP服務器 server { #監聽80端口,80端口是知名端口號,用於HTTP協議 listen 80; #定義自己的訪問url,hosts中有配置 server_name www.heyLuer.com; #首頁 index index.html # 項目路徑 root D:\yh\workspace\xx\src\main\webapp; # 編碼格式 charset utf-8; #代理配置參數 proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_set_header Host $host; proxy_set_header X-Forwarder-For $remote_addr; #access_log logs/host.access.log main; location / { proxy_pass http://server1; } #錯誤處理頁面(可選擇性配置) #error_page 404 /404.html; #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} } }
配置如上,寫的很清晰,tomcat啟動項目,使用域名訪問,正常訪問項目,配置ok!
由於能力有限,以上內容如有錯誤,歡迎大家的指正。
后續補充其他內容......