1、Ngnix簡介
2、Ngnix安裝
3、Ngnix之靜態資源訪問
4、Ngnix正向代理與反向代理
5、Ngnix之虛擬主機配置
6、Ngnix之負載均衡
7、Ngnix之訪問控制
8、Ngnix日誌管理
9、Ngnix配置https訪問
10、Ngnix配置文件詳解
11、參考資料下載
12、參考文章javascript
Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx可以支支撐5萬併發連接,而且cpu、內存等資源消耗卻很是低,運行很是穩定。php
(1)http靜態服務器。Nginx是一個http服務能夠獨立提供http服務。能夠作網頁靜態服務器,圖片服務器和文件服務器
(2)虛擬主機。當一臺部署單個應用的web服務器資源過剩時,能夠在該服務器上部署多個應用,用nginx來作反向代理,把訪問服務器的http請求正確的給到其中的某一個應用。(一臺服務器上有多個帶域名的應用,多個域名解析同一個IP地址,可是端口號不一樣)
(3)反向代理,負載均衡。當網站的訪問量達到必定程度後,單臺服務器不能知足用戶的請求時,須要用多臺服務器集羣可使用nginx作反向代理。而且多臺服務器能夠平均分擔負載,不會由於某臺服務器負載高宕機而某臺服務器閒置的狀況css
3.1 Apache簡介
Apache HTTP服務器是一個模塊化的服務器,能夠運行在幾乎全部普遍使用的計算機平臺上。其屬於應用服務器。Apache支持模塊多,性能穩定,Apache自己是靜態解析,適合靜態HTML、圖片等,但能夠經過擴展腳本、模塊等支持動態頁面等。html
3.2 nginx相對於apache的優勢
(1)輕量級,一樣起web 服務,比apache佔用更少的內存及資源
(2)抗併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能
(3)高度模塊化的設計,編寫模塊相對簡單
(4)提供負載均衡
(5)社區活躍,各類高性能模塊出品迅速前端
3.3 apache 相對於nginx 的優勢
(1)apache的 rewrite 比nginx 的強大 ;
(2)支持動態頁面;
(3)支持的模塊多,基本涵蓋全部應用;
(4)性能穩定,而nginx相對bug較多。java
3.4 二者優缺點對比
(1)Nginx 配置簡潔, Apache 複雜 ;
(2)Nginx 靜態處理性能比 Apache 高 3倍以上 ;
(3)Apache 對 PHP 支持比較簡單,Nginx 須要配合其餘後端用;
(4)Apache 的組件比 Nginx 多 ;
(5)動態請求(好比jsp、asp)由apache去作,nginx只適合靜態和反向;
(6)Apache在處理動態有優點,Nginx併發性比較好,CPU內存佔用低,若是rewrite頻繁,那仍是Apache較適合。node
下載地址:http://nginx.org/en/download.html
直接下載 nginx-1.12.2.zip,下載後解壓,解壓後以下linux
有不少種方法啓動nginx
(1)直接雙擊nginx.exe,雙擊後一個黑色的彈窗一閃而過
(2)打開cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe 或者 start nginx ,回車便可
3.檢查nginx是否啓動成功
直接在瀏覽器地址欄輸入網址 http://localhost:80,回車,出現如下頁面說明啓動成功ios
若是使用cmd命令窗口啓動nginx,關閉cmd窗口是不能結束nginx進程的,可以使用兩種方法關閉nginx
(1)輸入nginx命令 nginx -s stop(快速中止nginx) 或 nginx -s quit(完整有序的中止nginx)
(2)使用taskkill taskkill /f /t /im nginx.exenginx
下載Windows Service Wrapper,下載後內容以下(參考資料下載內容中已有安裝包)
將重命名後的 myapp.exe 複製到 nginx 的安裝目錄(我這裏是 "F:\kaifa_ruanjian\nginx-1.10.3")
在同一個nginx目錄下建立一個Windows Service Wrapper的XML配置文件,名稱必須與第一步重命名時使用的名稱一致,好比我這裏的是winsw-1.9-bin.xml
winsw-1.9-bin.xml文件內容以下:
<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>D:\NeatbeansSofts\Redis-x64-3.2.100\nginx.exe</executable> <logpath>D:\NeatbeansSofts\Redis-x64-3.2.100\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p D:\NeatbeansSofts\Redis-x64-3.2.100</startargument> <stopargument>-p D:\NeatbeansSofts\Redis-x64-3.2.100 -s stop</stopargument> </service>
命令行下執行如下命令,以便將其安裝成Windows服務。
其餘命令介紹:
卸載服務:winsw-1.9-bin.exe uninstall
啓動服務:winsw-1.9-bin.exe start
中止服務:winsw-1.9-bin.exe stop
請在參考資料下載內容中進行學習。
配置方法有兩種,一種是root關鍵字、另一種是alias關鍵字
創建一個文件夾,命名爲:ngnix_picture,並放入圖片,bbb.jpg
在ngnix的配置文件nginx.conf添加如下內容:
#此時,經過瀏覽器訪問http://127.0.0.1:7002/t.txt,則訪問服務器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7002; server_name 127.0.0.1; location / { root F:/kaifa_ruanjian/ngnix_picture/; } }
在瀏覽器中輸入訪問地址:http://127.0.0.1:7002/bbb.jpg,結果以下圖所示:
在ngnix的配置文件nginx.conf添加如下內容:
#此時,經過瀏覽器訪問http://127.0.0.1:7003/file/t.txt,則訪問服務器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7003; server_name 127.0.0.1; location /file/ { alias F:/kaifa_ruanjian/ngnix_picture/; } }
在瀏覽器中輸入訪問地址:http://127.0.0.1:7003/file/bbb.jpg,結果以下圖所示:
上述兩種方法都可達到目的,區別是它們對路徑的解析方式不一樣,alas會把指定路徑看成文件路徑,而root會把指定路徑接到文件路徑,再進行訪問。
說到代理,首先咱們要明確一個概念,所謂代理就是一個表明、一個渠道;
此時就設計到兩個角色,一個是被代理角色,一個是目標角色,被代理角色經過這個代理訪問目標角色完成一些任務的過程稱爲代理操做過程;如同生活中的專賣店~客人到adidas專賣店買了一雙鞋,這個專賣店就是代理,被代理角色就是adidas廠家,目標角色就是用戶。
說反向代理以前,咱們先看看正向代理,正向代理也是你們最常接觸的到的代理模式,咱們會從兩個方面來講關於正向代理的處理模式,分別從軟件方面和生活方面來解釋一下什麼叫正向代理
在現在的網絡環境下,咱們若是因爲技術須要要去訪問國外的某些網站,此時你會發現位於國外的某網站咱們經過瀏覽器是沒有辦法訪問的,此時你們可能都會用一個操做FQ進行訪問,FQ的方式主要是找到一個能夠訪問國外網站的代理服務器,咱們將請求發送給代理服務器,代理服務器去訪問國外的網站,而後將訪問到的數據傳遞給咱們!
上述這樣的代理模式稱爲正向代理,正向代理最大的特色是客戶端很是明確要訪問的服務器地址;服務器只清楚請求來自哪一個代理服務器,而不清楚來自哪一個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。
明白了什麼是正向代理,咱們繼續看關於反向代理的處理方式,舉例如我大天朝的某寶網站,天天同時鏈接到網站的訪問人數已經爆表,單個服務器遠遠不能知足人民日益增加的購買慾望了,此時就出現了一個你們耳熟能詳的名詞:分佈式部署;也就是經過部署多臺服務器來解決訪問人數限制的問題;某寶網站中大部分功能也是直接使用nginx進行反向代理實現的,而且經過封裝nginx和其餘的組件以後起了個高大上的名字:Tengine,有興趣的童鞋能夠訪問Tengine的官網查看具體的信息:http://tengine.taobao.org/
那麼反向代理具體是經過什麼樣的方式實現的分佈式的集羣操做呢,咱們先看一個示意圖:
經過上述的圖解你們就能夠看清楚了,多個客戶端給服務器發送的請求,nginx服務器接收到以後,按照必定的規則分發給了後端的業務處理服務器進行處理了。此時~請求的來源也就是客戶端是明確的,可是請求具體由哪臺服務器處理的並不明確了,nginx扮演的就是一個反向代理角色
反向代理,主要用於服務器集羣分佈式部署的狀況下,反向代理隱藏了服務器的信息!因此負載均衡就是反向代理的一個典型例子。
項目場景
(1)基於域名的虛擬主機 : 不一樣的域名 相同的IP(應用:外部網站)
(2)基於端口的虛擬主機 : 不使用域名、IP來區分不一樣站點的內容,而是用不一樣的TCP端口號(應用:公司內部網站,外部網站的管理後臺)
(3)基於IP地址的虛擬主機 : 不一樣的域名 不一樣的IP ( 須要加網絡接口 ,應用的不普遍)
因爲基於IP地址的虛擬主機須要添加網絡接口 使用不普遍,因此下面只對基於域名的虛擬主機和基於端口的虛擬主機 進行介紹。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 80; server_name www.nginx02.com; location / { root /root/html; index index.html index.htm; } } }
user root root; #說明:這裏的user根據 本身的nginx.conf文件所在的目錄的屬主屬性而定 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 8080; server_name www.nginx01.com; location / { root /root/html; index index.html index.htm; } } }
user root root; #說明:這裏的user根據 本身的nginx.conf文件所在的目錄的屬主屬性而定 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 10.219.24.26:80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 10.219.24.27:80; server_name www.nginx01.com; location / { root /root/html; index index.html index.htm; } } }
找到nginx.conf文件(在安裝文件conf文件夾中),配置如下內容:
#設定負載均衡的服務器列表 #upstream表示負載服務器池,定義名字爲hello 的服務器池 #weigth參數表示權值,權值越高被分配到的概率越大 upstream hello { server localhost:8080 weight=2; server localhost:8090 weight=2; } #監聽端口 server { listen 8899; server_name localhost; #匹配以jsp結尾的,tomcat的網頁文件是以jsp結尾 location / { index index.jsp; proxy_pass http://hello; #在這裏設置一個代理,和upstream的名字同樣 #如下是一些反向代理的配置可刪除 proxy_redirect off; #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #容許客戶端請求的最大單文件字節數 client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數 proxy_connect_timeout 300; #nginx跟後端服務器鏈接超時時間(代理鏈接超時) proxy_send_timeout 300; #後端服務器數據回傳時間(代理髮送超時) proxy_read_timeout 300; #鏈接成功後,後端服務器響應時間(代理接收超時) proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳 } }
nginx訪問控制的兩種方法,一種是基於Basic Auth認證,另外一種是基於IP的訪問控制
Basic Auth認證基於用戶受權的訪問控制
當客戶端想要訪問相應的網站或者目錄,要求用戶輸入用戶名和密碼才能訪問。
基於IP的訪問控制
(1)deny IP/IP段 : 拒絕某個IP或IP段的客戶端訪問
(2)allow IP/IP段 : 容許某個IP或IP段的客戶端訪問
(3)規則從上往下執行,如匹配中止,再也不往下匹配
找到nginx.conf文件(在安裝文件conf文件夾中),配置如下內容:
#此時,經過瀏覽器訪問http://127.0.0.1:7003/file/t.txt,則訪問服務器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7003; server_name 127.0.0.1; location /file/ { alias F:/kaifa_ruanjian/ngnix_picture/; #備註:必定要注意auth_basic_user_file路徑,不然會不厭其煩的出現403。 auth_basic "welcom to kevin home" ; auth_basic_user_file conf/htpasswd; } }
在conf文件夾中新建文件htpasswd
內容以下:
用戶名:密碼:註釋
admin:1234
從新生效配置文件後,在瀏覽器輸入http://127.0.0.1:7003/file/bbb.jpg,出現如下頁面
3.1 控制方法
location / {
deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; #從上到下的順序,相似iptables。匹配到了便跳出。如上的例子先禁止了192.16.1.1,接下來容許了3個網段,其中包含了一個ipv6,最後未匹配的IP所有禁止訪問.被deny的將返回403狀態碼。 }
3.2 IP的訪問控制侷限性
基於客戶端的IP,可是對於Nginx來講,它不會管你哪一個是真正的客戶端,若是咱們的訪問不是客戶端與服務端直接鏈接,而是經過了一層代理,好比它的代理能夠負載均衡、CDN的這種代理實現,也就是咱們的訪問不是客戶端直接訪問的服務端,而是經過其餘的中間件訪問服務端,這時候會出現一個問題,由於Nginx的access_module它是基於remote_addr這個變量來識別客戶端的IP的,那麼若是一個ip經過中間件訪問服務端,那麼Nginx認爲訪問的ip就是中間件的IP,那麼咱們在基於IP作限制的時候,那麼實際上是沒有做用的。因此這樣的話,準確性是不高的,因此就是利用nginx的access_module有侷限性。
在nginx 的日誌目錄logs下,默認有如下3個文件:
(1)access.log:記錄請求日誌
(2)0error.log:記錄錯誤日誌,例如啓動時端口被佔用,請求的資源不存在等。
(3)nginx.pid:記錄啓動時nginx的進程id
nginx的日誌配置是在conf/nginx.conf文件中
nginx默認不會對日誌作分割,隨着時間的積累,access.log和error.log將會愈來愈大,很是不便於咱們查看日誌。
首先建立bat腳本 split_log.bat , 並保存在nginx 目錄下:
@echo off rem 查看系統中正在運行的nginx進程 rem tasklist /fi "imagename eq nginx.exe" rem 備份並根據時間重命名訪問日誌文件 NET STOP "nginx" set "cmdstr=move C:\nginx\logs\access.log C:\nginx\logsHis\access.%date:~0,4%-%date:~5,2%-%date:~8,2%.log call %cmdstr%" rem 備份並根據時間重命名錯誤日誌文件 set "cmdstr=move C:\nginx\logs\error.log C:\nginx\logsHis\error.%date:~0,4%-%date:~5,2%-%date:~8,2%.log call %cmdstr%" rem re-opening log files NET START "nginx"
建立計劃任務
https://www.cnblogs.com/WUXIAOCHANG/p/10553949.html
證書生成完畢,ssl文件夾中一共生成以下4個文件,咱們須要使用到的是lee.crt和lee.key
修改nginx.conf文件
# HTTPS server # #modify by lee 20160907 for https -s server { listen 443 ssl; server_name www.lee.com; ssl_certificate C:/wnmp/nginx/ssl/lee.crt; ssl_certificate_key C:/wnmp/nginx/ssl/lee.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root C:/wnmp/lee; index index.html index.htm index.php; } root C:/wnmp/lee; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } #modify by lee 20160907 for https -s
重啓nginx,在瀏覽器中,訪問 https://www.lee.com。發現出現證書認證,並可以成功訪問。(www.lee.com爲生成證書時,Common Name輸入的域名)
(執行此步驟時,須要配置好Virtual Host,而且在www.lee.com開放目錄中添加了index.php默認入口訪問文件。)
上面的https被紅色劃線是由於咱們使用的是本身生成的證書,此證書不受瀏覽器信任,若是想使其變爲綠色,則須要向證書管理機構進行申請。
添加劇定向,自動跳轉使用https,在nginx.conf中virtual host中以下代碼位置添加一行代碼:
listen 80;
server_name www.lee.com;
#modify by lee 20160907 for https Redirect -s rewrite ^(.*) https://$server_name$1 permanent; #modify by lee 20160907 for https Redirect -e
重啓nginx,訪問www.lee.com,會發現瀏覽器自動跳轉到https://www.lee.com,並可以成功訪問。至此,https訪問配置成功完成。
這是一個比較完整的nginx配置文件示例,下面的nginx.conf簡單的實現nginx在前端作反向代理服務器的例子,處理js、png等靜態文件,jsp等動態請求轉發到其它服務器tomcat,以及負載均衡的配置。
user www www;
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 { use epoll; worker_connections 2048; } http { include 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 logs/access.log main; sendfile on; # tcp_nopush on; keepalive_timeout 65; # gzip壓縮功能設置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; # http_proxy 設置 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2; # 設定負載均衡後臺服務器列表 upstream backend { #ip_hash; server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; } # 很重要的虛擬主機配置 server { listen 80; server_name itoatest.example.com; root /apps/oaapp; charset utf-8; access_log logs/host.access.log main; #對 / 全部作負載均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm; proxy_pass http://backend; proxy_redirect off; # 後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } #靜態文件,nginx本身處理,不去backend請求tomcat location ~* /download/ { root /apps/oa/fs; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; } location ~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ## 其它虛擬主機,server 指令開始 }
#運行用戶 user nobody; #啓動進程,一般設置成和cpu的數量相等 worker_processes 1; #全局錯誤日誌及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工做模式及鏈接數上限 events { #epoll是多路複用IO(I/O Multiplexing)中的一種方式, #僅用於linux2.6以上內核,能夠大大提升nginx的性能 use epoll; #單個後臺worker process進程的最大併發連接數 worker_connections 1024; # 併發總數是 worker_processes 和 worker_connections 的乘積 # 即 max_clients = worker_processes * worker_connections # 在設置了反向代理的狀況下,max_clients = worker_processes * worker_connections / 4 爲何 # 爲何上面反向代理要除以4,應該說是一個經驗值 # 根據以上條件,正常狀況下的Nginx Server能夠應付的最大鏈接數爲:4 * 8000 = 32000 # worker_connections 值的設置跟物理內存大小有關 # 由於併發受IO約束,max_clients的值須小於系統能夠打開的最大文件數 # 而系統能夠打開的最大文件數和內存大小成正比,通常1GB內存的機器上能夠打開的文件數大約是10萬左右 # 咱們來看看360M內存的VPS能夠打開的文件句柄數是多少: # $ cat /proc/sys/fs/file-max # 輸出 34336 # 32000 < 34336,即併發鏈接總數小於系統能夠打開的文件句柄總數,這樣就在操做系統能夠承受的範圍以內 # 因此,worker_connections 的值需根據 worker_processes 進程數目和系統能夠打開的最大文件總數進行適當地進行設置 # 使得併發總數小於操做系統能夠打開的最大文件數目 # 其實質也就是根據主機的物理CPU和內存進行配置 # 固然,理論上的併發總數可能會和實際有所誤差,由於主機還有其餘的工做進程須要消耗系統資源。 # ulimit -SHn 65535 } http { #設定mime類型,類型由mime.type文件定義 include 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 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 65; tcp_nodelay on; #開啓gzip壓縮 gzip on; gzip_disable "MSIE [1-6]."; #設定請求緩衝 client_header_buffer_size 128k; large_client_header_buffers 4 128k; #設定虛擬主機配置 server { #偵聽80端口 listen 80; #定義使用 www.nginx.cn訪問 server_name www.nginx.cn; #定義服務器的默認網站根目錄位置 root html; #設定本虛擬主機的訪問日誌 access_log logs/nginx.access.log main; #默認請求 location / { #定義首頁索引文件的名稱 index index.php index.html index.htm; } # 定義錯誤提示頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { } #靜態文件,nginx本身處理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #過時30天,靜態文件不怎麼更新,過時能夠設大一點, #若是頻繁更新,則能夠設置得小一點。 expires 30d; } #PHP 腳本請求所有轉發到 FastCGI處理. 使用FastCGI默認配置. location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #禁止訪問 .htxxx 文件 location ~ /.ht { deny all; } } }
user www www; #指定Nginx Worker進程運行用戶以及用戶組 worker_processes 2; #指定了Nginx要開啓的進程數,多核CPU指定和核數同樣多的進程數 pid logs/nginx.pid; #指定進程id的存儲文件位置 worker_rlimit_nofile 65535; #指定單進程打開文件數,需與系統設定一致 events { use epoll; #指定nginx工做模式,nginx主要的工做模式有select、poll、kqueue、epoll 其中select、poll是標準工做模式,kqueue、epoll爲高效工做模式,epoll用在Linux系統中,而kqueue用在BSD系統中 worker_connections 65535;#指定單進程的最大鏈接數 } HTTP部分 http { include mime.types; #指定配置文件所包含的文件 default_type application/octet-stream; #指定默認類型爲二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口 log_format main '$remote_addr - $remote_user [$time_local] "$request" '#設定日誌格式 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';; client_max_body_size 20m; #設置容許客戶端請求的最大的單個文件字節數 client_header_buffer_size 16k;#指定來自客戶端請求頭的headerbuffer大小,若是自定義了消息頭或有更大的cookie,能夠在這裏增長緩衝大小 large_client_header_buffers 4 32k;#指定客戶端請求中較大的消息頭的緩存最大數量和大小,4爲個數,32k爲大小,最大緩存爲4個32kb sendfile on;#開啓高效傳輸模式 tcp_nopush on; # tcp_nopush,tcp_nodelay設置on,防止網絡阻塞 tcp_nodelay on; keepalive_timeout 65; #指定客戶端鏈接保持活動的超時時間 client_header_timeout 10;#指定客戶端請求頭讀取超時時間,若是超過這個時間,客戶端尚未發送任何數據,Nginx將返回「Request time out(408)」錯誤 client_body_timeout 10;#指定客戶端請求主體讀取超時時間,若是超過這個時間���客戶端尚未發送任何數據,Nginx將返回「Request time out(408)」錯誤 send_timeout 10;#指定響應客戶端的超時時間。這個超時僅限於兩個鏈接活動之間的時間,若是超過這個時間,客戶端沒有任何活動,Nginx將會關閉鏈接 gzip on; #開啓gzip壓縮,實時壓縮輸出數據流 gzip_min_length 1k; #設置容許壓縮的頁面最小字節數 gzip_buffers 4 16k; #指定內存空間來存貯壓縮結果,這裏指定4個單位爲16k的內存來存儲壓縮結果,即總大小爲64k gzip_http_version 1.1;#指定識別HTTP協議版本,默認是1.1 gzip_comp_level 2;#指定gzip壓縮比,1 壓縮比最小,處理速度最快;9 壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源 gzip_types text/plain application/x-javascript text/css application/xml;#指定壓縮的類型,不管是否指定,「text/html」類型老是會被壓縮 gzip_vary on;#該選項開啓可讓前端的緩存服務器緩存通過gzip壓縮的頁面,例如,用Varnish緩存通過Nginx壓縮的數據 server_tokens off;#隱藏Nginx版本號 server { listen 8000; #指定Nginx監端口 server_name localhost;#用來指定IP或者域名 charset utf-8;#指定Nginx默認的字符集,只有utf-8支持中文字符 access_log logs/host.access.log main;#指定訪問日誌的名稱及位置 location / { index index.html index.htm;#設定默認首頁 root /tom/webapps/ROOT;#指定網頁根目錄 } location ~ (jsp|\?) { #指定url中包含jsp或者?的所有轉發到192.168.0.10的80端口即tomcat處理 proxy_pass http://192.168.0.10:80; }
連接:https://pan.baidu.com/s/1gbzzLNJf7bvMc7fRR0aOeA
提取碼:5sbd