温馨提示×

LNMP中Nginx如何设置

小樊
45
2025-09-26 23:28:36
栏目: 编程语言

LNMP环境中Nginx的核心配置指南

在LNMP(Linux+Nginx+MySQL+PHP)架构中,Nginx作为Web服务器,主要负责处理HTTP请求、转发PHP请求至PHP-FPM、提供静态文件服务等。以下是Nginx的具体配置步骤及关键说明:

1. 安装Nginx

根据Linux发行版选择对应命令安装:

  • Debian/Ubuntu
    sudo apt update && sudo apt install nginx -y 
  • CentOS/RHEL
    sudo yum install epel-release && sudo yum install nginx -y 

安装完成后,启动Nginx并设置开机自启:

sudo systemctl start nginx sudo systemctl enable nginx 

通过访问服务器IP地址,确认Nginx默认页面显示正常。

2. 配置Nginx虚拟主机(核心步骤)

虚拟主机用于托管多个域名/网站。Nginx通过sites-available(存放配置文件)和sites-enabled(存放启用配置的符号链接)目录管理虚拟主机。

(1)创建虚拟主机配置文件

以域名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"查找)。
(2)启用虚拟主机

创建符号链接,将配置文件链接至sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ 
(3)测试并重载配置

测试配置文件语法(无错误则继续):

sudo nginx -t 

重载Nginx以应用更改:

sudo systemctl reload nginx 

3. 配置PHP-FPM联动

Nginx本身不处理PHP代码,需通过PHP-FPM(FastCGI进程管理器)执行PHP脚本。

(1)安装PHP-FPM及扩展
  • Debian/Ubuntu
    sudo apt install php-fpm php-mysql -y 
  • CentOS/RHEL
    sudo yum install php php-fpm php-mysqlnd -y 
(2)调整PHP-FPM配置

编辑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)。

(3)重启PHP-FPM
sudo systemctl restart php8.2-fpm sudo systemctl enable php8.2-fpm 

4. 配置MySQL数据库

Nginx需连接MySQL存储动态数据(如WordPress、Laravel等)。

(1)安装MySQL
  • Debian/Ubuntu
    sudo apt install mysql-server -y 
  • CentOS/RHEL
    sudo yum install mariadb-server -y 
(2)运行安全脚本
sudo mysql_secure_installation 

按提示设置root密码、移除匿名用户、禁止root远程登录等。

(3)创建数据库及用户

登录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; 

5. 关键优化与安全配置

(1)设置防火墙

允许HTTP(80)和HTTPS(443)流量(以UFW为例):

sudo ufw allow 'Nginx Full' sudo ufw enable 
(2)配置HTTPS(可选但推荐)

使用Let’s Encrypt免费获取SSL证书:

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d example.com -d www.example.com 

按提示完成证书安装,Nginx会自动配置HTTPS重定向。

(3)性能优化
  • 启用Gzip压缩:在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"; } 
  • 调整worker进程:在nginx.confevents块中,设置worker_connections为1024(根据服务器内存调整)。

6. 验证配置

  • 静态网站:在/var/www/example.com目录下放置index.html,访问http://example.com应显示页面内容;
  • PHP动态网站:在/var/www/example.com目录下创建info.php,内容为<?php phpinfo(); ?>,访问http://example.com/info.php应显示PHP信息页面(确认PHP-FPM联动正常)。

通过以上步骤,即可在LNMP环境中完成Nginx的基础配置。根据实际需求,可进一步调整缓存策略、负载均衡、反向代理等功能。

0