標籤:優雅 初學者 cgi out remote 處理 code sql 預設的配置
1.PHP程式員玩轉Linux系列-怎麼安裝使用CentOS
2.PHP程式員玩轉Linux系列-lnmp環境的搭建
3.PHP程式員玩轉Linux系列-搭建FTP代碼開發環境
4.PHP程式員玩轉Linux系列-備份還原MySQL
5.PHP程式員玩轉Linux系列-自動備份與SVN
6.PHP程式員玩轉Linux系列-Linux和Windows安裝nginx
翻譯自官網文檔
nginx有一個master進程和很多個worker進程.master進程的主要目的是讀取和執行設定檔,維持worker進程.worker進程真正處理請求.nginx基於事件模型和作業系統來分配worker進程,設定檔中的worker進程數一般配置成CPU的核心數.預設的設定檔名是nginx.conf,目錄位址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx
開始,關閉和重載配置
nginx 開啟
nginx -s reload 重新載入設定檔
nginx -s quit 優雅的退出
nginx -s reopen 重新開啟記錄檔
靜態內容服務
開啟設定檔,裡面已經包含了一個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通過他們監聽的連接埠和server_name來區分,它還會對要求標頭和server塊裡面location指令參數比較.
server { location / { root /var/www/html; }}
這個location塊指定了"/"首碼,比較請求的URI,對於匹配到的URI,這個URI會被拼接到root指令指定路徑的後面.換句話說,在本地檔案系統中去構成路徑,就是去請求/var/www/html.
如果這裡有很多location指令,nginx會選擇最長首碼的.上面的location塊提供了一個最短首碼,只有當其他所有的location都沒有匹配到,才會使用它.
下一步,增加第二個localtion塊
server { location / { root /var/www/html; } location /images/ { root /data; }}
當請求以/images/開始,第二個location將會匹配到 (location / 也會匹配到這個請求,但是他的首碼比第二個短)
現在它已經可以作為web服務的設定檔正常工作了,監聽80連接埠.在本地機器輸入http://localhost就可以訪問到該服務.當請求URI以/images/開頭,伺服器會響應/data/images目錄下的檔案.舉例:當請求是http://localhost/images/example.png,nginx會響應/data/images/example.png檔案.如果該檔案不存在,nginx會響應404錯誤.
當請求的URI不以/images/開頭,該請求會被映射到/var/www/html目錄.舉例:請求的URI是http://localhost/some/example.html,nginx會響應/var/www/html/some/example.html檔案.
應用新的配置,開啟nginx或者發送reload訊號給nginx的master進程,執行以下命令:
nginx -s reload
萬一有不可預料的錯誤發生,去access.log 和 error.log中找原因,這兩個檔案的目錄在/usr/local/nginx/logs或者/var/log/nginx
配置簡單的反向 Proxy服務
nginx最常用的功能就是作為反向 Proxy伺服器,意味著這個服務要接收請求,把請求引到被代理的服務,從那裡取迴響應,發送給用戶端.
我們將配置基本的反向 Proxy伺服器,這個服務處理來自本地目錄的圖片檔案的請求,並把其他的所有請求發給Proxy 伺服器.在這個例子中,兩個服務都會被定義在一個nginx執行個體中.
首先,定義一個Proxy 伺服器,在nginx設定檔中新添加一個server塊,如下:
server { listen 8080; root /data/up1; location / { }}
這個簡單的服務監聽8080連接埠(之前,我們沒有使用過listen指令,因為預設是監聽的80連接埠),映射所有的請求到本地檔案系統的/data/up1目錄.建立這個目錄,在裡面放入index.html檔案.注意root指令放在了server上下文了.當location塊下沒有root指令時,這個root指令將會被使用.
下一步,使用上一步中的服務配合,修改一下作為反向 Proxy伺服器配置.在第一個location塊中,添加一個proxy_pass指令,在參數中指明協議名和代理服務的連接埠(在本例,它是http://localhost:8080)
server { location / { proxy_pass http://localhost:8080; } location ~ \.(gif|jpg|png)$ { root /data/images; }}
在第二個location塊中,參數是個Regex,匹配所有尾碼是.gif.jpg或者.png的請求,使用Regex,應該在前面加上~ .符合的請求將會被映射到/data/images目錄下
配置FastCGI代理服務
nginx可以用作去路由請求到FastCGI服務,這樣就可以運行一些各種架構和PHP的應用
最基本的nginx配置,使用fastcgi_pass指令替換proxy_pass指令,fastcgi_param指令設定傳遞給FastCGI伺服器的參數.假定FastCGI伺服器運行在localhost:9000.把上一部分中的反向 Proxy配置例子拿過來,修改參數為localhost:9000.在PHP中,SCRIPT_FILENAME參數被用作確定指令碼名稱,QUERY_STRING 被用作傳遞請求參數,配置如下:
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; }}
現在就建立了一個服務,這個服務將路由出了靜態圖片檔案之外的所有請求到被代理的伺服器.這個被代理的伺服器是通過FastCGI協議運行在localhost:9000上的.
原文地址:http://www.cnblogs.com/taoshihan/p/6674019.html
[Linux] PHP程式員玩轉Linux系列-nginx初學者引導