『壹』 nginx怎麼配置禁止上傳除了圖片,html,css等之外格式的文件
上傳控制項自帶過濾類型的屬性accept,比如:
<input id="FileUp" type="file" accept=".jpg,.png,.gif,.htm,.html,.css" />
『貳』 有誰用nginx對post提交參數做過過濾
動互聯網行業開發過程中,服務端經常會需要檢查是否收到請求,收到什麼樣的請求,最簡單的辦法就是看nginx的access log,常見的nginx配置中access log一般都只有GET請求的參數,而POST請求的參數卻不行。 $request_body This variable(0.7.58+) ...
『叄』 nginx怎麼過濾 站點某個文件
如果要過濾站點靜態文件(jpg,gif,html..)目錄寫法是:
location~^/images/{
expires4d;
}
如果如果要過濾.css結尾的文件,可以寫成
location~.css${
expires10d;
}
其它回的文件過濾與這類答似,同時你也可以使用正則。記得配置完畢後要重啟nginx才會生效。
『肆』 如何可以在nginx反向代理的情況下過濾掉源站的cookie
我的方案的 通過COOKIE來處理
nginx配置裡面不是有個的$http_cookie 變數嗎,我們可以用它來判斷 PHPSESSID 是否存在,如果存在就訪問後端,反之訪問緩存文件。
『伍』 如何利用nginx
使用的環境是64位 Ubuntu 14.04。nginx依賴以下模塊:
l gzip模塊需要 zlib 庫
l rewrite模塊需要 pcre 庫
l ssl 功能需要openssl庫
1.1.安裝pcre
1. 獲取pcre編譯安裝包,在http://www.pcre.org/上可以獲取當前最新的版本
2. 解壓縮pcre-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure。
4. make & make install
1.2.安裝openssl
1. 獲取openssl編譯安裝包,在http://www.openssl.org/source/上可以獲取當前最新的版本。
2. 解壓縮openssl-xx.tar.gz包。
3. 進入解壓縮目錄,執行./config。
4. make & make install
1.3.安裝zlib
1. 獲取zlib編譯安裝包,在http://www.zlib.net/上可以獲取當前最新的版本。
2. 解壓縮openssl-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure。
4. make & make install
1.4.安裝nginx
1. 獲取nginx,在http://nginx.org/en/download.html上可以獲取當前最新的版本。
2. 解壓縮nginx-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure
4. make & make install
若安裝時找不到上述依賴模塊,使用--with-openssl=<openssl_dir>、--with-pcre=<pcre_dir>、--with-zlib=<zlib_dir>指定依賴的模塊目錄。如已安裝過,此處的路徑為安裝目錄;若未安裝,則此路徑為編譯安裝包路徑,nginx將執行模塊的默認編譯安裝。
啟動nginx之後,瀏覽器中輸入http://localhost可以驗證是否安裝啟動成功。
clip_image002
2.Nginx配置
安裝完成之後,配置目錄conf下有以下配置文件,過濾掉了xx.default配置:
tyler@ubuntu:/opt/nginx-1.7.7/conf$ tree |grep -v default
.
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf
├── scgi_params
├── uwsgi_params
└── win-utf
除了nginx.conf,其餘配置文件,一般只需要使用默認提供即可。
2.1.nginx.conf
nginx.conf是主配置文件,默認配置去掉注釋之後的內容如下圖所示:
l worker_process表示工作進程的數量,一般設置為cpu的核數
l worker_connections表示每個工作進程的最大連接數
l server{}塊定義了虛擬主機
n listener監聽埠
n server_name監聽域名
n location{}是用來為匹配的 URI 進行配置,URI 即語法中的「/uri/」。location / { }匹配任何查詢,因為所有請求都以 / 開頭。
u root指定對應uri的資源查找路徑,這里html為相對路徑,完整路徑為/opt/ opt/nginx-1.7.7/html/
u index指定首頁index文件的名稱,可以配置多個,以空格分開。如有多個,按配置順序查找。
clip_image004
從配置可以看出,nginx監聽了80埠、域名為localhost、跟路徑為html文件夾(我的安裝路徑為/opt/nginx-1.7.7,所以/opt/nginx-1.7.7/html)、默認index文件為index.html, index.htm、伺服器錯誤重定向到50x.html頁面。
可以看到/opt/nginx-1.7.7/html/有以下文件:
tyler@ubuntu:/opt/nginx-1.7.7/html$ ls
50x.html index.html
這也是上面在瀏覽器中輸入http://localhost,能夠顯示歡迎頁面的原因。實際上訪問的是/opt/nginx-1.7.7/html/index.html文件。
2.2.mime.types
文件擴展名與文件類型映射表,nginx根據映射關系,設置http請求響應頭的Content-Type值。當在映射表找不到時,使用nginx.conf中default-type指定的默認值。例如,默認配置中的指定的default-type為application/octet-stream。
include mime.types;
default_type application/octet-stream;
默認
下面截一段mime.types定義的文件擴展名與文件類型映射關系,完整的請自行查看:
clip_image005
2.3.fastcgi_params
nginx配置Fastcgi解析時會調用fastcgi_params配置文件來傳遞伺服器變數,這樣CGI中可以獲取到這些變數的值。默認傳遞以下變數:
clip_image006
這些變數的作用從其命名可以看出。
2.4.fastcgi.conf
對比下fastcgi.conf與fastcgi_params文件,可以看出只有以下差異:
tyler@ubuntu:/opt/nginx-1.7.7/conf$ diff fastcgi.conf fastcgi_params
2d1
< fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
即fastcgi.conf只比fastcgi_params多了一行「fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;」
原本只有fastcgi_params文件,fastcgi.conf是nginx 0.8.30 (released: 15th of December 2009)才引入的。主要為是解決以下問題(參考:http://www.dwz.cn/x3GIJ):
原本Nginx只有fastcgi_params,後來發現很多人在定義SCRIPT_FILENAME時使用了硬編碼的方式。例如,fastcgi_param SCRIPT_FILENAME /var/www/foo$fastcgi_script_name。於是為了規范用法便引入了fastcgi.conf。
不過這樣的話就產生一個疑問:為什麼一定要引入一個新的配置文件,而不是修改舊的配置文件?這是因為fastcgi_param指令是數組型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次SCRIPT_FILENAME,那麼它們都會被發送到後端,這可能會導致一些潛在的問題,為了避免此類情況,便引入了一個新的配置文件。
因此不再建議大家使用以下方式(搜了一下,網上大量的文章,並且nginx.conf的默認配置也是使用這種方式):
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
而使用最新的方式:
include fastcgi.conf;
2.5.uwsgi_params
與fastcgi_params一樣,傳遞哪些伺服器變數,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param。
2.6.scgi_params
與fastcgi_params一樣,傳遞哪些伺服器變數,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param。
2.7.koi-utf、koi-win、win-utf
這三個文件都是與編碼轉換映射文件,用於在輸出內容到客戶端時,將一種編碼轉換到另一種編碼。
koi-win: charset_map koi8-r < -- > windows-1251
koi-utf: charset_map koi8-r < -- > utf-8
win-utf: charset_map windows-1251 < -- > utf-8
koi8-r是斯拉夫文字8位元編碼,供俄語及保加利亞語使用。在Unicode未流行之前,KOI8-R 是最為廣泛使用的俄語編碼,使用率甚至起ISO/IEC 8859-5還高。這3個文件存在是因為作者是俄國人的原因。
『陸』 Nginx是什麼,有什麼優點
Nginx是一個高性能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。
優點:
(1)更快
這表現在兩個方面:一方面,在正常情況下,單次請求會得到更快的響應;另一方面,在高峰期(如有數以萬計的並發請求),Nginx可以比其他Web伺服器更快地響應請求。
(2)高擴展性,跨平台
Nginx的設計極具擴展性,它完全是由多個不同功能、不同層次、不同類型且耦合度極低的模塊組成。因此,當對某一個模塊修復Bug或進行升級時,可以專
注於模塊自身,無須在意其他。而且在HTTP模塊中,還設計了HTTP過濾器模塊:一個正常的HTTP模塊在處理完請求後,會有一串HTTP過濾器模塊對
請求的結果進行再處理。這樣,當我們開發一個新的HTTP模塊時,不但可以使用諸如HTTP核心模塊、events模塊、log模塊等不同層次或者不同類
型的模塊,還可以原封不動地復用大量已有的HTTP過濾器模塊。這種低耦合度的優秀設計,造就了Nginx龐大的第三方模塊,當然,公開的第三方模塊也如
官方發布的模塊一樣容易使用。
Nginx的模塊都是嵌入到二進制文件中執行的,無論官方發布的模塊還是第三方模塊都是如此。這使得第三方模塊一樣具備極其優秀的性能,充分利用Nginx的高並發特性,因此,許多高流量的網站都傾向於開發符合自己業務特性的定製模塊。
(3)高可靠性:用於反向代理,宕機的概率微乎其微
高可靠性是我們選擇Nginx的最基本條件,因為Nginx的可靠性是大家有目共睹的,很多家高流量網站都在核心伺服器上大規模使用Nginx。
Nginx的高可靠性來自於其核心框架代碼的優秀設計、模塊設計的簡單性;另外,官方提供的常用模塊都非常穩定,每個worker進程相對獨
立,master進程在1個worker進程出錯時可以快速「拉起」新的worker子進程提供服務。
(4)低內存消耗
一般情況下,10 000個非活躍的HTTP Keep-Alive連接在Nginx中僅消耗2.5MB的內存,這是Nginx支持高並發連接的基礎。
(5)單機支持10萬以上的並發連接
這是一個非常重要的特性!隨著互聯網的迅猛發展和互聯網用戶數量的成倍增長,各大公司、網站都需要應付海量並發請求,一個能夠在峰值期頂住10萬以上並發
請求的Server,無疑會得到大家的青睞。理論上,Nginx支持的並發連接上限取決於內存,10萬遠未封頂。當然,能夠及時地處理更多的並發請求,是
與業務特點緊密相關的。
(6)熱部署
master管理進程與worker工作進程的分離設計,使得Nginx能夠提供熱部署功能,即可以在7×24小時不間斷服務的前提下,升級Nginx的可執行文件。當然,它也支持不停止服務就更新配置項、更換日誌文件等功能。
(7)最自由的BSD許可協議
這是Nginx可以快速發展的強大動力。BSD許可協議不只是允許用戶免費使用Nginx,它還允許用戶在自己的項目中直接使用或修改Nginx源碼,然後發布。這吸引了無數開發者繼續為Nginx貢獻自己的智慧。
以上7個特點當然不是Nginx的全部,擁有無數個官方功能模塊、第三方功能模塊使得Nginx能夠滿足絕大部分應用場景,這些功能模塊間可以疊加以實現
更加強大、復雜的功能,有些模塊還支持Nginx與Perl、Lua等腳本語言集成工作,大大提高了開發效率。這些特點促使用戶在尋找一個Web伺服器時
更多考慮Nginx。
選擇Nginx的核心理由還是它能在支持高並發請求的同時保持高效的服務。
『柒』 nginx rtmp怎麼處理mp4
免費在線音視頻轉換 去我的新浪博客 [叫我紅領巾521] 裡面有方法
『捌』 linux部署的nginx,mp4文件無法訪問的問題
在192.168.1.3的機器上訪問127.0.0.1對應的地址,看能不能訪問,不能的話看下nginx是否啟動成功,80埠是否監聽了
如果本地可以訪問,那就是訪問鏈路上有中斷的中間設備,如防火牆等
『玖』 nginx配置文件詳解
一、安裝Nginx
在安裝Nginx之前,需確保系統已經安裝了gcc、 openssl-devel、 pcre-devel和zlib-devel軟體庫。
其中, –with-http_stub_status_mole 可以用來啟用 Nginx 的 NginxStatus 功能,以監控 Nginx 的運行狀態。
二、Nginx的配置文件結構
Nginx的配置文件nginx.conf位於其安裝目錄的conf目錄下。
nginx.conf由多個塊組成,最外面的塊是main,main包含Events和HTTP,HTTP包含upstream和多個Server,Server又包含多個location。
main(全局設置)、server(主機設置)、upstream(負載均衡伺服器設置)和 location(URL匹配特定位置的設置)。
1、main塊設置的指令將影響其他所有設置。
2、server塊的指令主要用於指定主機和埠。
3、upstream指令主要用於負載均衡,設置一系列的後端伺服器。
4、location塊用於匹配網頁位置。
這四者之間的關系式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。
在這四個部分當中,每個部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、HttpGzip Static模塊和Http Addition模塊等。
三、Nginx的全局配置
events事件指令是設定Nginx的工作模式及連接數上限:
use是個事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選worker_connections也是個事件模塊指令,用於定義Nginx每個進程的最大連接數,默認是1024。
最大客戶端連接數由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections。
在作為反向代理時,max_clients變為:max_clients = worker_processes * worker_connections/4。
進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令「ulimit -n 65536」後worker_connections的設置才能生效。
四、下面配置Nginx的HttpGzip模塊。這個模塊支持在線實時壓縮輸出數據流。
通過/opt/nginx/sbin/nginx -V命令可以查看安裝Nginx時的編譯選項,由輸出可知,已經安裝了HttpGzip模塊。
五、負載均衡配置
下面設定負載均衡的伺服器列表:
upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度演算法來實現客戶端IP到後端伺服器的負載均衡。
在上面的設定中,通過upstream指令指定了一個負載均衡器的名稱cs.com。這個名稱可以任意指定,在後面需要的地方直接調用即可,Nginx的負載均衡模塊目前支持4種調度演算法。
六、server虛擬主機配置
下面介紹對虛擬主機的配置。
建議將對虛擬主機進行配置的內容寫進另外一個文件,然後通過include指令包含進來,這樣更便於維護和管理。
server標志定義虛擬主機開始,listen用於指定虛擬主機的服務埠,server_name用來指定IP地址或者域名,多個域名之間用空格分 開。index用於設定訪問的默認首頁地址,root指令用於指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
Charset用於 設置網頁的默認編碼格式。access_log用來指定此虛擬主機的訪問日誌存放路徑,最後的main用於指定訪問日誌的輸出格式。
七、location URL匹配配置
URL地址匹配是進行Nginx配置中最靈活的部分。 location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。使用location URL匹配配置還可以實現反向代理,用於實現PHP動態解析或者負載負載均衡。
以下這段設置是通過location指令來對網頁URL進行分析處理,所有擴展名以.gif、.jpg、.jpeg、.png、.bmp、.swf結尾的靜態文件都交給nginx處理,而expires用來指定靜態文件的過期時間,這里是30天。
八、StubStatus模塊配置
StubStatus模塊能夠獲取Nginx自上次啟動以來的工作狀態,此模塊非核心模塊,需要在Nginx編譯安裝時手工指定才能使用此功能。
stub_status設置為「on」表示啟用StubStatus的工作狀態統計功能。access_log 用來指定StubStatus模塊的訪問日誌文件。auth_basic是Nginx的一種認證機制。
auth_basic_user_file用來指定認證的密碼文件,由於Nginx的auth_basic認證採用的是與Apache兼容的密碼文件,因此需要用Apache的htpasswd命令來生成密碼文件。
然後輸入兩次密碼後確認之後添加用戶成功。
要查看Nginx的運行狀態,可以輸入http://ip/NginxStatus,輸入創建的用戶名和密碼就可以看到Nginx的運行狀態。
Active connections表示當前活躍的連接數,第三行的三個數字表示 Nginx當前總共處理了34561個連接, 成功創建次握手, 總共處理了354399個請求。
最後一行的Reading表示Nginx讀取到客戶端Header信息數, Writing表示Nginx返回給客戶端的Header信息數,「Waiting」表示Nginx已經處理完,正在等候下一次請求指令時的駐留連接數。
在最後這段設置中,設置了虛擬主機的錯誤信息返回頁面,通過error_page指令可以定製各種錯誤信息的返回頁面。在默認情況下,Nginx會在主目錄的html目錄中查找指定的返回頁面。
特別需要注意的是,這些錯誤信息的返回頁面大小一定要超過512K,否者會被ie瀏覽器替換為ie默認的錯誤頁面。