用戶瀏覽器發起對網頁的訪問:http://192.168.1.103/index.php
用戶和nginx服務器進行三次握手進行TCP鏈接(忽略包括nginx訪問控制策略、nginx防火牆等訪問控制策略)php
root@json:/data/web# cat /etc/nginx/conf.d/blog.conf server { root /data/web/blog/; index index.html index.htm; server_name www.fwait.com; location / { try_files $uri $uri/ /index.html; } location /blog/ { #alias /usr/share/doc/; auth_basic "authorized users only"; auth_basic_user_file /etc/nginx/passwd.conf; #autoindex on; allow 192.168.1.103; deny all; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; } }
用戶訪問的是index.php,則會匹配到location ~ .php$,這個的含義是對用戶經過URI訪問的資源進行區分大小的匹配,而且訪問的資源是以.php結尾的。
nginx根據用戶請求的資源匹配到具體的location後,會執行location對應的動做,location中動做的含義是:
include /etc/nginx/fastcgi_params; #表示nginx會調用fastcgi這個接口
fastcgi_intercept_errors on; #表示開啓fastcgi的中斷和錯誤信息記錄
fastcgi_pass 127.0.0.1:9000; # 表示nginx經過fastcgi_pass將用戶請求的資源發給127.0.0.1:9000進行解析,這裏的nginx和php腳本解析服務器是在同一臺機器上,因此127.0.0.1:9000表示的就是本地的php腳本解析服務器。
根據nginx服務器的配置,能夠看出,用戶訪問的是動態的php資源,nginx會調用php相關腳本解析程序對用戶訪問的資源進行解析。html
第七步:nginx構造一個響應報文將結果返回給用戶
這只是nginx的其中一種,用戶請求的和返回用戶請求結果是異步進行,即爲用戶請求的資源在nginx中作了一次中轉,nginx能夠同步,即爲解析出來的資源,服務器直接將資源返回給用戶,不用在nginx中作一次中轉。node
root@json:/data/web# cat /etc/nginx/nginx.conf|egrep -v "#|^$" user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } root@json:/data/web#
root@json:/data/web# cat /etc/nginx/conf.d/blog.conf server { root /data/web/blog/; index index.html index.htm; server_name www.fwait.com; location / { try_files $uri $uri/ /index.html; } location /blog/ { #alias /usr/share/doc/; auth_basic "authorized users only"; auth_basic_user_file /etc/nginx/passwd.conf; #autoindex on; allow 192.168.1.103; deny all; } location ~ \.php$ { #include /usr/local/etc/nginx/fastcgi.conf; include /etc/nginx/fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; } } root@json:/data/web#