位置:首页 > Go > LNMP 中 Nginx 如何设置:从虚拟主机到 PHP-FPM 联动的完整梳理

LNMP 中 Nginx 如何设置:从虚拟主机到 PHP-FPM 联动的完整梳理

时间:2026-08-24  |  作者:冻月看渠  |  阅读:0

在LNMP(Linux+Nginx+MySQL+PHP)这套经典架构里,Nginx扮演的角色可以说是承上启下的关键——它既要处理海量的HTTP请求,又要负责把PHP相关的请求精准地转发给PHP-FPM,同时还得高效地提供静态文件服务。可以说,Nginx配得好,整个Web服务的性能就稳了一大半。下面就来复盘一下,Nginx在LNMP环境里究竟该怎么配置,以及每一步背后需要注意什么。

LNMP中Nginx如何设置

1. 安装Nginx

不同Linux发行版的安装命令略有差异,但本质都一样。Debian/Ubuntu系用apt,CentOS/RHEL系则用yum

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

安装完成后,启动服务并设置开机自启是基本操作:

sudo systemctl start nginx
sudo systemctl enable nginx

最后,直接访问服务器IP地址,如果能正常看到Nginx的默认欢迎页面,说明安装和启动已经成功了。

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

虚拟主机是为了让一台服务器能够同时托管多个域名或网站。Nginx通过sites-a vailablesites-enabled这两个目录来管理——前者存放所有配置文件的“草稿”,后者则通过符号链接的方式,决定哪些配置真正生效。

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

假设我们要为域名example.com配置网站,首先创建配置文件:

sudo nano /etc/nginx/sites-a vailable/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_pass unix:/var/run/php/php8.2-fpm.sock;  # PHP-FPM socket路径,需与版本匹配
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问.htaccess等敏感文件
    location ~ /.ht {
        deny all;
    }
}

这里有几个关键点需要特别留意:server_name必须与域名解析记录一致,并且需要提前在DNS服务商那里把域名指向服务器IP;root路径下的文件,Nginx用户(通常是www-data)必须拥有读写权限;至于fastcgi_pass里的socket路径,可以通过sudo find / -name "*.sock"来查找确认。

(2)启用虚拟主机

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

sudo ln -s /etc/nginx/sites-a vailable/example.com /etc/nginx/sites-enabled/

(3)测试并重载配置

修改完配置后,一定要先测试语法是否正确:

sudo nginx -t

如果显示syntax is ok,就可以放心重载Nginx了:

sudo systemctl reload nginx

3. 配置PHP-FPM联动

Nginx本身不处理PHP代码,它只负责把PHP请求转交给PHP-FPM这个“幕后英雄”。所以,PHP-FPM的配置至关重要。

(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路径完全一致,否则两者无法“对上话”。

(3)重启PHP-FPM

sudo systemctl restart php8.2-fpm
sudo systemctl enable php8.2-fpm

4. 配置MySQL数据库

对于像WordPress、Lara vel这样的动态应用,Nginx还需要连接MySQL来存储和读取数据。

(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)设置防火墙

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

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

按照提示操作,Certbot会自动完成证书安装,并重写Nginx配置实现HTTPS重定向。

(3)性能优化

  • 启用Gzip压缩:在http块中添加:
    gzip on;
    gzip_types text/plain text/css application/json application/ja vascript text/xml application/xml application/xml+rss text/ja vascript;
  • 静态文件缓存:在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动态网站:在相同目录下创建info.php,内容为,访问http://example.com/info.php,如果能看到PHP信息页面,说明PHP-FPM联动生效。

至此,LNMP环境中Nginx的基础配置就告一段落了。当然,这只是一个起点——根据实际业务需求,你还可以进一步调整缓存策略、配置负载均衡、甚至搭建反向袋里。Nginx的灵活性和高性能,值得持续探索。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多