PHP程序員玩轉(zhuǎn)Linux系列 nginx初學(xué)者引導(dǎo)
PHP程序員玩轉(zhuǎn)Linux系列文章:
1.PHP程序員玩轉(zhuǎn)Linux系列-怎么安裝使用CentOS
2.PHP程序員玩轉(zhuǎn)Linux系列-lnmp環(huán)境的搭建
3.PHP程序員玩轉(zhuǎn)Linux系列-搭建FTP代碼開發(fā)環(huán)境
4.PHP程序員玩轉(zhuǎn)Linux系列-備份還原MySQL
5.PHP程序員玩轉(zhuǎn)Linux系列-自動(dòng)備份與SVN
6.PHP程序員玩轉(zhuǎn)Linux系列-Linux和Windows安裝nginx
翻譯自官網(wǎng)文檔
nginx有一個(gè)master進(jìn)程和很多個(gè)worker進(jìn)程.master進(jìn)程的主要目的是讀取和執(zhí)行配置文件,維持worker進(jìn)程.worker進(jìn)程真正處理請(qǐng)求.nginx基于事件模型和操作系統(tǒng)來分配worker進(jìn)程,配置文件中的worker進(jìn)程數(shù)一般配置成CPU的內(nèi)核數(shù).默認(rèn)的配置文件名是nginx.conf,目錄地址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx
開始,關(guān)閉和重載配置
nginx 開啟
nginx -s reload 重新載入配置文件
nginx -s quit 優(yōu)雅的退出
nginx -s reopen 重新打開日志文件
靜態(tài)內(nèi)容服務(wù)
打開配置文件,里面已經(jīng)包含了一個(gè)server塊的例子
http { server { } }
默認(rèn)的nginx配置文件nginx.conf里面,使用include指令包含了/etc/nginx/conf.d/此目錄下后綴為.conf的所有配置文件
http { include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
在/etc/nginx/conf.d/目錄下,編輯default.conf文件,通常會(huì)有很多的配置文件,每個(gè)配置文件中都有一個(gè)server塊,nginx通過他們監(jiān)聽的端口和server_name來區(qū)分,它還會(huì)對(duì)請(qǐng)求頭和server塊里面location指令參數(shù)比較.
server { location / { root /var/www/html; } }
這個(gè)location塊指定了"/"前綴,比較請(qǐng)求的URI,對(duì)于匹配到的URI,這個(gè)URI會(huì)被拼接到root指令指定路徑的后面.換句話說,在本地文件系統(tǒng)中去構(gòu)成路徑,就是去請(qǐng)求/var/www/html.
如果這里有很多l(xiāng)ocation指令,nginx會(huì)選擇最長(zhǎng)前綴的.上面的location塊提供了一個(gè)最短前綴,只有當(dāng)其他所有的location都沒有匹配到,才會(huì)使用它.
下一步,增加第二個(gè)localtion塊
server { location / { root /var/www/html; } location /images/ { root /data; } }
當(dāng)請(qǐng)求以/images/開始,第二個(gè)location將會(huì)匹配到 (location / 也會(huì)匹配到這個(gè)請(qǐng)求,但是他的前綴比第二個(gè)短)
現(xiàn)在它已經(jīng)可以作為web服務(wù)的配置文件正常工作了,監(jiān)聽80端口.在本地機(jī)器輸入http://localhost就可以訪問到該服務(wù).當(dāng)請(qǐng)求URI以/images/開頭,服務(wù)器會(huì)響應(yīng)/data/images目錄下的文件.舉例:當(dāng)請(qǐng)求是http://localhost/images/example.png,nginx會(huì)響應(yīng)/data/images/example.png文件.如果該文件不存在,nginx會(huì)響應(yīng)404錯(cuò)誤.
當(dāng)請(qǐng)求的URI不以/images/開頭,該請(qǐng)求會(huì)被映射到/var/www/html目錄.舉例:請(qǐng)求的URI是http://localhost/some/example.html,nginx會(huì)響應(yīng)/var/www/html/some/example.html文件.
應(yīng)用新的配置,開啟nginx或者發(fā)送reload信號(hào)給nginx的master進(jìn)程,執(zhí)行以下命令:
nginx -s reload
萬一有不可預(yù)料的錯(cuò)誤發(fā)生,去access.log 和error.log中找原因,這兩個(gè)文件的目錄在/usr/local/nginx/logs或者/var/log/nginx
配置簡(jiǎn)單的反向代理服務(wù)
nginx最常用的功能就是作為反向代理服務(wù)器,意味著這個(gè)服務(wù)要接收請(qǐng)求,把請(qǐng)求引到被代理的服務(wù),從那里取回響應(yīng),發(fā)送給客戶端.
我們將配置基本的反向代理服務(wù)器,這個(gè)服務(wù)處理來自本地目錄的圖片文件的請(qǐng)求,并把其他的所有請(qǐng)求發(fā)給代理服務(wù)器.在這個(gè)例子中,兩個(gè)服務(wù)都會(huì)被定義在一個(gè)nginx實(shí)例中.
首先,定義一個(gè)代理服務(wù)器,在nginx配置文件中新添加一個(gè)server塊,如下:
server { listen 8080; root /data/up1; location / { } }
這個(gè)簡(jiǎn)單的服務(wù)監(jiān)聽8080端口(之前,我們沒有使用過listen指令,因?yàn)槟J(rèn)是監(jiān)聽的80端口),映射所有的請(qǐng)求到本地文件系統(tǒng)的/data/up1目錄.創(chuàng)建這個(gè)目錄,在里面放入index.html文件.注意root指令放在了server上下文了.當(dāng)location塊下沒有root指令時(shí),這個(gè)root指令將會(huì)被使用.
下一步,使用上一步中的服務(wù)配合,修改一下作為反向代理服務(wù)器配置.在第一個(gè)location塊中,添加一個(gè)proxy_pass指令,在參數(shù)中指明協(xié)議名和代理服務(wù)的端口(在本例,它是http://localhost:8080)
server { location / { proxy_pass http://localhost:8080; } location ~ \.(gif|jpg|png)$ { root /data/images; } }
在第二個(gè)location塊中,參數(shù)是個(gè)正則表達(dá)式,匹配所有后綴是.gif.jpg或者.png的請(qǐng)求,使用正則表達(dá)式,應(yīng)該在前面加上~ .符合的請(qǐng)求將會(huì)被映射到/data/images目錄下
配置FastCGI代理服務(wù)
nginx可以用作去路由請(qǐng)求到FastCGI服務(wù),這樣就可以運(yùn)行一些各種框架和PHP的應(yīng)用
最基本的nginx配置,使用fastcgi_pass指令替換proxy_pass指令,fastcgi_param指令設(shè)置傳遞給FastCGI服務(wù)器的參數(shù).假定FastCGI服務(wù)器運(yùn)行在localhost:9000.把上一部分中的反向代理配置例子拿過來,修改參數(shù)為localhost:9000.在PHP中,SCRIPT_FILENAME參數(shù)被用作確定腳本名稱,QUERY_STRING 被用作傳遞請(qǐng)求參數(shù),配置如下:
server { location / { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; } location ~ \.(gif|jpg|png)$ { root /data/images; } }
現(xiàn)在就創(chuàng)建了一個(gè)服務(wù),這個(gè)服務(wù)將路由出了靜態(tài)圖片文件之外的所有請(qǐng)求到被代理的服務(wù)器.這個(gè)被代理的服務(wù)器是通過FastCGI協(xié)議運(yùn)行在localhost:9000上的.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- nasm實(shí)現(xiàn)的用vmware運(yùn)行自做的linux啟動(dòng)盤的引導(dǎo)代碼
- Linux的引導(dǎo)過程剖析
- Linux管理員手冊(cè)(5)--引導(dǎo)和關(guān)機(jī)
- linux系統(tǒng)命令筆記整理
- Linux系統(tǒng)用戶管理命令小結(jié)
- Linux系統(tǒng)清除緩存的方法總結(jié)
- linux系統(tǒng)sudo命令詳解
- Linux系統(tǒng)刪除文件夾和文件的命令
- linux系統(tǒng)下dd命令的使用方法
- Linux系統(tǒng)中sudo命令的十個(gè)技巧總結(jié)
- linux引導(dǎo)系統(tǒng)的方法分析
相關(guān)文章
apache啟動(dòng)報(bào) shmget() failed: Invalid argument的解決方法
在apache啟動(dòng)時(shí)報(bào)錯(cuò):“shmget() failed: Invalid argument”,如何解決呢?這里簡(jiǎn)單分享下,方便需要的朋友2013-06-06Linux平臺(tái)安裝redis及redis擴(kuò)展的方法
這篇文章主要介紹了Linux平臺(tái)安裝redis及redis擴(kuò)展的方法,較為詳細(xì)的分析了Linux平臺(tái)redis安裝步驟、操作命令與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-08-08關(guān)于安裝LNMP集成包后上傳圖片報(bào)500錯(cuò)誤的解決方法
這篇文章主要給大家介紹了關(guān)于安裝LNMP集成包后上傳圖片報(bào)500錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12安全檢測(cè)Unix和Linux服務(wù)器安全設(shè)置入門精講
盡管為服務(wù)器設(shè)計(jì)軟件的軟件工程師們想方設(shè)法提高系統(tǒng)的安全性,然而由于系統(tǒng)管理員的水平參差不齊或安全意識(shí)底下,往往給黑客提供了入侵的機(jī)會(huì)。2008-05-05Linux 判斷文件修改時(shí)間和系統(tǒng)時(shí)間差
這篇文章主要介紹了 Linux 判斷文件修改時(shí)間和系統(tǒng)時(shí)間差的相關(guān)資料,需要的朋友可以參考下2017-05-05