在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的基础配置。根据实际需求,可进一步调整缓存策略、负载均衡、反向代理等功能。