nginx是一款開源的Web服務(wù)器軟件,已經(jīng)成為了一個廣泛使用的高性能服務(wù)器,其主要特點(diǎn)是占用資源少,響應(yīng)速度快,支持負(fù)載均衡和動靜分離等功能。其中,nginx的支持SSL功能,以及其和PHP間的協(xié)作能力,為Web服務(wù)器的開發(fā)提供了更為方便和完備的解決方案。
nginx支持SSL的實現(xiàn)方法相當(dāng)簡單,只需要在配置文件中添加以下代碼即可:
server { listen 80; server_name www.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name www.example.com; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key; # 以下為其他nginx配置內(nèi)容 }其中,第一個server塊為將80端口的所有請求重定向到443端口上,實現(xiàn)了http訪問變?yōu)閔ttps訪問的功能。第二個server塊則指定了443端口的ssl證書位置,并進(jìn)行了一些服務(wù)器配置。 nginx的ssl功能,使得服務(wù)器在信道中的數(shù)據(jù)傳輸更加安全和可靠。而PHP,則通過nginx的fastcgi模塊,和nginx建立起了一個高效的通信通道。通過配置fastcgi,將php相關(guān)參數(shù)設(shè)置好之后,nginx就可以將請求直接轉(zhuǎn)發(fā)到PHP-FPM(PHP FastCGI進(jìn)程管理器),從而為PHP程序提供快速的響應(yīng)支持。一段nginx和PHP協(xié)作的配置示例如下:
server { listen 80; server_name www.example.com; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }在以上示例中,當(dāng)url中的地址所指定的文件不存在時,nginx會重定向到index.php頁面。所有.php文件的請求,都會交給fastcgi模塊去處理,并通過fastcgi_pass的設(shè)置尋找指定的php-fpm處理器。處理器相對應(yīng)的sock文件也在以上的設(shè)置中提供。此外,在使用fastcgi的配置中,nginx還提供了大量的參數(shù)設(shè)置,如緩沖區(qū)大小、超時時間等等。 當(dāng)然,nginx支持的功能遠(yuǎn)不止SSL和PHP處理方案,其它的諸如負(fù)載均衡、代理服務(wù)器、流控等功能,都為開發(fā)者提供了更為全面和豐富的解決方案。而nginx的強(qiáng)大和廣泛應(yīng)用,更是彰顯了其在Web服務(wù)器開發(fā)領(lǐng)域的決策性地位。