在Nginx中部署靜態站點和PHP應用通常需要配置兩個不同的服務器塊(server block)來處理不同類型的請求。以下是一個簡單的示例配置:
server {
listen 80;
server_name example.com;
root /var/www/static_site;
location / {
try_files $uri $uri/ =404;
}
}
在上面的配置中,Nginx會監聽80端口,當訪問example.com時,會返回位于/var/www/static_site目錄下的靜態文件。如果請求的文件不存在,Nginx會返回404錯誤。
server {
listen 80;
server_name example.com;
root /var/www/php_app;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
在上面的配置中,Nginx會將所有以.php結尾的請求傳遞給php-fpm進程處理。PHP應用的根目錄為/var/www/php_app,當訪問example.com時,會自動加載index.php文件。如果請求的文件不存在,則會將請求傳遞給index.php處理。