在LNMP(Linux+Nginx+MySQL+PHP)架构中,Nginx作为Web服务器,主要负责处理HTTP请求、转发PHP请求至PHP-FPM、提供静态文件服务等。以下是Nginx的具体配置步骤及关键说明:
根据Linux发行版选择对应命令安装:
sudo apt update && sudo apt install nginx -y
sudo yum install epel-release && sudo yum install nginx -y
安装完成后,启动Nginx并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
通过访问服务器IP地址,确认Nginx默认页面显示正常。
虚拟主机用于托管多个域名/网站。Nginx通过sites-available(存放配置文件)和sites-enabled(存放启用配置的符号链接)目录管理虚拟主机。
以域名example.com为例,创建配置文件:
sudo nano /etc/nginx/sites-available/example.com
写入以下基础配置(需根据实际情况调整):
server {
listen 80;
server_name example.com www.example.com; # 域名(可多个,空格分隔)
root /var/www/example.com; # 网站根目录(需手动创建)
index index.php index.html index.htm; # 默认索引文件
# 静态文件处理:尝试匹配文件,不存在则返回404
location / {
try_files $uri $uri/ =404;
}
# PHP处理:转发至PHP-FPM(关键配置)
location ~ \.php$ {
include snippets/fastcgi-php.conf; # 包含FastCGI参数
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # PHP-FPM socket路径(需与PHP版本匹配)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 传递脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
# 禁止访问.htaccess等敏感文件
location ~ /\.ht {
deny all;
}
}
说明:
server_name:必须与域名解析一致(需提前配置DNS解析至服务器IP);root:网站文件的存储路径,需确保Nginx用户(通常为www-data)有读写权限;fastcgi_pass:指向PHP-FPM的socket文件(路径可通过sudo find / -name "*.sock"查找)。创建符号链接,将配置文件链接至sites-enabled目录:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试配置文件语法(无错误则继续):
sudo nginx -t
重载Nginx以应用更改:
sudo systemctl reload nginx
Nginx本身不处理PHP代码,需通过PHP-FPM(FastCGI进程管理器)执行PHP脚本。
sudo apt install php-fpm php-mysql -y
sudo yum install php php-fpm php-mysqlnd -y
编辑PHP-FPM的pool配置文件(通常位于/etc/php/8.2/fpm/pool.d/www.conf):
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
找到listen指令,确保与Nginx中的fastcgi_pass路径一致(如unix:/var/run/php/php8.2-fpm.sock)。
sudo systemctl restart php8.2-fpm
sudo systemctl enable php8.2-fpm
Nginx需连接MySQL存储动态数据(如WordPress、Laravel等)。
sudo apt install mysql-server -y
sudo yum install mariadb-server -y
sudo mysql_secure_installation
按提示设置root密码、移除匿名用户、禁止root远程登录等。
登录MySQL:
sudo mysql -u root -p
执行以下SQL命令:
CREATE DATABASE example_db; -- 创建数据库
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; -- 创建用户
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost'; -- 授权
FLUSH PRIVILEGES; -- 刷新权限
EXIT;
允许HTTP(80)和HTTPS(443)流量(以UFW为例):
sudo ufw allow 'Nginx Full'
sudo ufw enable
使用Let’s Encrypt免费获取SSL证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
按提示完成证书安装,Nginx会自动配置HTTPS重定向。
http块中添加:gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location块中添加:location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
nginx.conf的events块中,设置worker_connections为1024(根据服务器内存调整)。/var/www/example.com目录下放置index.html,访问http://example.com应显示页面内容;/var/www/example.com目录下创建info.php,内容为<?php phpinfo(); ?>,访问http://example.com/info.php应显示PHP信息页面(确认PHP-FPM联动正常)。通过以上步骤,即可在LNMP环境中完成Nginx的基础配置。根据实际需求,可进一步调整缓存策略、负载均衡、反向代理等功能。