[Linux] PHP程序员玩转Linux系列-nginx初学者引导
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系列-自動備份與SVN
6.PHP程序員玩轉(zhuǎn)Linux系列-Linux和Windows安裝nginx
?
翻譯自官網(wǎng)文檔
nginx有一個master進程和很多個worker進程.master進程的主要目的是讀取和執(zhí)行配置文件,維持worker進程.worker進程真正處理請求.nginx基于事件模型和操作系統(tǒng)來分配worker進程,配置文件中的worker進程數(shù)一般配置成CPU的內(nèi)核數(shù).默認的配置文件名是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)包含了一個server塊的例子
http {server {} }默認的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文件,通常會有很多的配置文件,每個配置文件中都有一個server塊,nginx通過他們監(jiān)聽的端口和server_name來區(qū)分,它還會對請求頭和server塊里面location指令參數(shù)比較.
server {location / {root /var/www/html;} }這個location塊指定了"/"前綴,比較請求的URI,對于匹配到的URI,這個URI會被拼接到root指令指定路徑的后面.換句話說,在本地文件系統(tǒng)中去構(gòu)成路徑,就是去請求/var/www/html.
如果這里有很多l(xiāng)ocation指令,nginx會選擇最長前綴的.上面的location塊提供了一個最短前綴,只有當(dāng)其他所有的location都沒有匹配到,才會使用它.
下一步,增加第二個localtion塊
server {location / {root /var/www/html;}location /images/ {root /data;} }當(dāng)請求以/images/開始,第二個location將會匹配到 (location /?也會匹配到這個請求,但是他的前綴比第二個短)
現(xiàn)在它已經(jīng)可以作為web服務(wù)的配置文件正常工作了,監(jiān)聽80端口.在本地機器輸入http://localhost就可以訪問到該服務(wù).當(dāng)請求URI以/images/開頭,服務(wù)器會響應(yīng)/data/images目錄下的文件.舉例:當(dāng)請求是http://localhost/images/example.png,nginx會響應(yīng)/data/images/example.png文件.如果該文件不存在,nginx會響應(yīng)404錯誤.
當(dāng)請求的URI不以/images/開頭,該請求會被映射到/var/www/html目錄.舉例:請求的URI是http://localhost/some/example.html,nginx會響應(yīng)/var/www/html/some/example.html文件.
應(yīng)用新的配置,開啟nginx或者發(fā)送reload信號給nginx的master進程,執(zhí)行以下命令:
nginx -s reload萬一有不可預(yù)料的錯誤發(fā)生,去access.log?和?error.log中找原因,這兩個文件的目錄在/usr/local/nginx/logs或者/var/log/nginx
?
配置簡單的反向代理服務(wù)
nginx最常用的功能就是作為反向代理服務(wù)器,意味著這個服務(wù)要接收請求,把請求引到被代理的服務(wù),從那里取回響應(yīng),發(fā)送給客戶端.
我們將配置基本的反向代理服務(wù)器,這個服務(wù)處理來自本地目錄的圖片文件的請求,并把其他的所有請求發(fā)給代理服務(wù)器.在這個例子中,兩個服務(wù)都會被定義在一個nginx實例中.
首先,定義一個代理服務(wù)器,在nginx配置文件中新添加一個server塊,如下:
server {listen 8080;root /data/up1;location / {} }這個簡單的服務(wù)監(jiān)聽8080端口(之前,我們沒有使用過listen指令,因為默認是監(jiān)聽的80端口),映射所有的請求到本地文件系統(tǒng)的/data/up1目錄.創(chuàng)建這個目錄,在里面放入index.html文件.注意root指令放在了server上下文了.當(dāng)location塊下沒有root指令時,這個root指令將會被使用.
下一步,使用上一步中的服務(wù)配合,修改一下作為反向代理服務(wù)器配置.在第一個location塊中,添加一個proxy_pass指令,在參數(shù)中指明協(xié)議名和代理服務(wù)的端口(在本例,它是http://localhost:8080)
server {location / {proxy_pass http://localhost:8080;}location ~ \.(gif|jpg|png)$ {root /data/images;} }在第二個location塊中,參數(shù)是個正則表達式,匹配所有后綴是.gif.jpg或者.png的請求,使用正則表達式,應(yīng)該在前面加上~?.符合的請求將會被映射到/data/images目錄下
?
配置FastCGI代理服務(wù)
nginx可以用作去路由請求到FastCGI服務(wù),這樣就可以運行一些各種框架和PHP的應(yīng)用
最基本的nginx配置,使用fastcgi_pass指令替換proxy_pass指令,fastcgi_param指令設(shè)置傳遞給FastCGI服務(wù)器的參數(shù).假定FastCGI服務(wù)器運行在localhost:9000.把上一部分中的反向代理配置例子拿過來,修改參數(shù)為localhost:9000.在PHP中,SCRIPT_FILENAME參數(shù)被用作確定腳本名稱,QUERY_STRING?被用作傳遞請求參數(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)建了一個服務(wù),這個服務(wù)將路由出了靜態(tài)圖片文件之外的所有請求到被代理的服務(wù)器.這個被代理的服務(wù)器是通過FastCGI協(xié)議運行在localhost:9000上的.
?
總結(jié)
以上是生活随笔為你收集整理的[Linux] PHP程序员玩转Linux系列-nginx初学者引导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PL/Sql 中创建、调试、调用存储过程
- 下一篇: python Linux系统信息