我下載的是1. 14.2 如圖javascript
Nginx配置文件主要分紅四部分:main(全局設置)、server(主機設置)、upstream(上游服務器設置,主要爲反向代理、負載均衡相關配置)和 location(URL匹配特定位置後的設置),每部分包含若干個指令。main部分設置的指令將影響其它全部部分的設置;server部分的指令主要用於指定虛擬主機域名、IP和端口;upstream的指令用於設置一系列的後端服務器,設置反向代理及後端服務器的負載均衡;location部分用於匹配網頁位置(好比,根目錄「/」,「/images」,等等)。他們之間的關係式:server繼承main,location繼承server;upstream既不會繼承指令也不會被繼承。它有本身的特殊指令,不須要在其餘地方的應用。php
#main全局配置{ #events模塊 #http模塊{ #server配置(重點) } }
詳細配置以下css
#main全局配置 user www www; #指定nginx進程使用什麼用戶啓動 worker_processes 4; #指定啓動多少進程來處理請求,通常狀況下設置成CPU的核數,若是開啓了ssl和gzip更應該設置成與邏輯CPU數量同樣甚至爲2倍,能夠減小I/O操做。使用grep ^processor /proc/cpuinfo | wc -l查看CPU核數。 worker_cpu_affinity 0001 0010 0100 1000; #在高併發狀況下,經過設置將CPU和具體的進程綁定來下降因爲多核CPU切換形成的寄存器等現場重建帶來的性能損耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。 error_log /data/logs/nginx_error.log crit; #error_log是個主模塊指令,用來定義全局錯誤日誌文件。日誌輸出級別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日誌最爲最詳細,而crit輸出日誌最少。 #pid /usr/local/webserver/nginx/nginx.pid; #指定進程pid文件的位置。worker_rlimit_nofile 65535;: 用於指定一個nginx進程能夠打開的最多文件描述符數目,這裏是65535,須要使用命令「ulimit -n 65535」來設置。 #events模塊 events{ use select; #use是個事件模塊指令,用來指定Nginx的工做模式。Nginx支持的工做模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工做模式,kqueue和epoll是高效的工做模式,不一樣的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對於Linux系統,epoll工做模式是首選。在操做系統不支持這些高效模型時才使用select。 worker_connections 65536; #每個worker進程能併發處理(發起)的最大鏈接數(包含與客戶端或後端被代理服務器間等全部鏈接數)。nginx做爲反向代理服務器,計算公式 最大鏈接數 = worker_processes * worker_connections/4,因此這裏客戶端最大鏈接數是65536,這個能夠增到到8192都不要緊,看狀況而定,但不能超事後面的worker_rlimit_nofile。當nginx做爲http服務器時,計算公式裏面是除以2。進程的最大鏈接數受Linux系統進程的最大打開文件數限制,在執行操做系統命令ulimit -n 65536後worker_connections的設置才能生效。 } #http服務器 http { include mime.types; #include是個主模塊指令,實現對配置文件所包含的文件的設定,能夠減小主配置文件的複雜度。相似於Apache中的include方法。 default_type application/octet-stream; #default_type屬於HTTP核心模塊指令,這裏設定默認類型爲二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口。 #charset gb2312; #charset gb2312; 指定客戶端編碼格式。 #HTTP參數之客戶端head緩存 server_names_hash_bucket_size 128; #服務器名字的hash表大小。 client_header_buffer_size 32k; #用來指定來自客戶端請求頭的header buffer 大小。對於大多數請求,1K的緩存已經足夠了,若是自定義了消息頭或有更大的cookie,能夠增大緩存區大小。 large_client_header_buffers 4 128k;#用來指定客戶端請求中較大的消息頭的緩存最大數量和大小,4爲個數,128k爲大小,最大緩存爲4個128KB。 client_max_body_size 10m; #客戶端請求的最大的單個文件字節數。 容許客戶端請求的最大單文件字節數。若是有上傳較大文件,請設置它的限制值 client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數。 sendfile on ; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,減小用戶空間到內核空間的上下文切換。對於普通應用設爲 on,若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的負載。 #sendfile on ; #開啓 tcp_nopush on; 和tcp_nodelay on; 防止網絡阻塞。 tcp_nopush on; # tcp_nodelay on; keepalive_timeout 65 : #長鏈接超時時間,單位是秒,這個參數很敏感,涉及瀏覽器的種類、後端服務器的超時設置、操做系統的設置,能夠另外起一片文章了。長鏈接請求大量小文件的時候,能夠減小重建鏈接的開銷,但假若有大文件上傳,65s內沒上傳完成會致使失敗。若是設置時間過長,用戶又多,長時間保持鏈接會佔用大量資源。 client_body_timeout 60s; #用於設置客戶端請求主體讀取超時時間,默認是60s。若是超過這個時間,客戶端尚未發送任何數據,nginx將返回Request time out(408)錯誤。 send_timeout 60s; #用於指定響應客戶端的超時時間。這個超時僅限於兩個鏈接活動之間的時間,若是超過這個時間,客戶端沒有任何活動,Nginx將會關閉鏈接。 #HTTP參數之FastCGI參數 fastcgi_connect_timeout 300; #指定鏈接到後端FastCGI的超時時間。 fastcgi_send_timeout 300; #指定向FastCGI傳送請求的超時時間,這個值是已經完成兩次握手後向FastCGI傳送請求的超時時間。 fastcgi_read_timeout 300; #指定接收FastCGI應答的超時時間,這個值是已經完成兩次握手後接收FastCGI應答的超時時間。 fastcgi_buffer_size 64k; #用於指定讀取FastCGI應答第一部分須要多大的緩衝區,這個值表示將使用1個64KB的緩衝區讀取應答的第一部分(應答頭),能夠設置爲fastcgi_buffers選項指定的緩衝區大小。 fastcgi_buffers 4 64k; #指定本地須要用多少和多大的緩衝區來緩衝FastCGI的應答請求。若是一個PHP腳本所產生的頁面大小爲256KB,那麼會爲其分配4個64KB的緩衝區來緩存;若是頁面大小大於256KB,那麼大於256KB的部分會緩存到fastcgi_temp指定的路徑中,可是這並非好方法,由於內存中的數據處理速度要快於硬盤。通常這個值應該爲站點中PHP腳本所產生的頁面大小的中間值,若是站點大部分腳本所產生的頁面大小爲256KB,那麼能夠把這個值設置爲「16 16k」、「4 64k」等。 fastcgi_busy_buffers_size 128k; #默認值是fastcgi_buffers的兩倍。 fastcgi_temp_file_write_size 128k; #表示在寫入緩存文件時使用多大的數據塊,默認值是fastcgi_buffers的兩倍。 fastcgi_cache TEST; #示開啓FastCGI緩存併爲其指定一個名稱。開啓緩存很是有用,能夠有效下降CPU的負載,而且防止502錯誤的發生。可是開啓緩存也會引發不少問題,要視具體狀況而定。 fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; #FastCGI緩存指定一個文件路徑、目錄結構等級、關鍵字區域存儲時間和非活動刪除時間。 fastcgi_cache_valid 200 302 1h; #用來指定應答代碼的緩存時間。實例中的值表示將200和302應答緩存一個小時,將301應答緩存1天,其餘應答均緩存1分鐘。 fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m; #HTTP參數之gzip模塊設置 gzip on; #開啓gzip壓縮輸出 gzip_min_length 1k; #最小壓縮文件大小,頁面字節數從header頭的Content-Length中獲取。默認值爲0,無論多大頁面都壓縮,建議設置成大於1K的字節數,小於1K可能會越壓越大。 gzip_buffers 4 16k; #壓縮緩衝區,表示申請四個16K的內存做爲壓縮結果流緩存,默認是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。 gzip_http_version 1.1; #用於設置識別HTTP協議版本,默認是1.1,目前主流瀏覽器都已成指出。(默認1.1,前端若是是squid2.5請使用1.0) gzip_comp_level 6; #壓縮等級,1壓縮比最小,處理速度最快,9壓縮比最大,傳輸速度快,可是消耗CPU資源。 gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; #壓縮類型,默認就已經包含text/html,因此下面就不用再寫了,寫上去也不會有問題,可是會有一個warn。 gzip_vary on; #和http頭有關係,會在響應頭加個 Vary: Accept-Encoding ,可讓前端的緩存服務器緩存通過gzip壓縮的頁面,例如,用Squid緩存通過Nginx壓縮的數據。 gzip_proxied any; #Nginx做爲反向代理的時候啓用,決定開啓或者關閉後端服務器返回的結果是否壓縮,匹配的前提是後端服務器必需要返回包含」Via」的 header頭。 #server配置 server { listen 80 default; #監聽端口,默認80,小於1024的要以root啓動。能夠爲listen *:80、listen 127.0.0.1:80等形式。 server_name localhost; # 服務器名,如localhost、www.example.com,能夠經過正則匹配。 index index.html index.htm index.php; root /data/htdocs/www; #定義服務器的默認網站根目錄位置。若是locationURL匹配的是子目錄或文件,root沒什麼做用,通常放在server指令裏面或/下。 index index.jsp index.html index.htm #定義路徑下默認訪問的文件名,通常跟着root放。 #server_name_in_redirect off; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } } }
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; root D:/root;//重點配置,這裏爲根目錄路由位置 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
上面代碼監聽80端口
http服務目錄爲 D:/root http服務目錄爲。html
若是配置 index index.html; 輸入localhost 默認訪問 localhost/index.html index 只支持網頁不支持圖片及視頻。前端
因爲沒有配置環境變量,到nginx根目錄運行dos命裏。java
啓動:nginx 或者雙擊nginx.exenode
關閉: nginx -s stop 或者(任務管理器kill掉nginx進程)nginx
啓動後在瀏覽器輸入:localhost,可以加載出歡迎界面說明正常啓動成功了web
在瀏覽器地址欄輸入:locahost/imgs/huoying.jpgjson
至此簡單的nginx代理就完成了