在虚拟机环境中部署Nginx是许多开发者和系统管理员常用的实践,它既能提供独立的测试环境,又能确保生产环境的配置可复现性,以下是详细的安装与配置步骤,涵盖环境准备、安装过程、基础配置及常见问题处理。
环境准备
在开始安装前,需确保虚拟机满足基本要求,以CentOS 7为例,建议分配至少2GB内存和20GB磁盘空间,并确保网络连接正常,首先更新系统软件包:
sudo yum update -y sudo yum install -y epel-release
若使用Ubuntu系统,则需执行:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
安装Nginx
编译安装(推荐源码编译)
通过编译安装可灵活定制功能,首先安装依赖项:
sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载Nginx最新稳定版(以1.24.0为例):
wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0
配置编译参数(可根据需求添加模块):
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-stream
编译并安装:
make -j$(nproc) && sudo make install
服务管理
创建systemd服务文件/usr/lib/systemd/system/nginx.service如下:
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target
启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start nginx sudo systemctl enable nginx
基础配置
配置文件结构
Nginx主配置文件位于/usr/local/nginx/conf/nginx.conf,主要包含以下部分:
- 全局块:定义运行用户、工作进程数等
- events块:配置连接数模型
- http块:包含服务器、上游等核心配置
创建虚拟主机
在/usr/local/nginx/conf/conf.d目录下创建新配置文件(如example.com.conf):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /api {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}
创建网站根目录并重启服务:
sudo mkdir -p /var/www/html && echo "Hello Nginx" | sudo tee /var/www/html/index.html sudo nginx -t && sudo systemctl reload nginx
防火墙配置
开放HTTP/HTTPS端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
常见问题处理
端口冲突
若启动时报错”address already in use”,需修改listen指令或关闭占用进程:
sudo netstat -tulpn | grep :80 sudo kill -9 <PID>
权限问题
确保运行用户(默认为nobody)对配置文件和日志目录有读写权限:
sudo chown -R nobody:nobody /usr/local/nginx/ sudo chmod -R 755 /usr/local/nginx/
性能优化建议
可通过调整worker_processes和worker_connections参数提升并发性能,具体数值需根据服务器配置测试确定,典型配置如下:
worker_processes auto;
events {
worker_connections 1024;
}
验证与维护
通过浏览器访问虚拟机IP或域名,确认页面正常显示,使用nginx -T命令可查看完整配置树,日常维护建议:
- 定期检查日志文件:
/usr/local/nginx/logs/error.log - 使用
nginx -s reload平滑重载配置 - 备份配置文件:
sudo cp -r /usr/local/nginx/conf /backup/nginx_conf
通过以上步骤,即可在虚拟机中完成Nginx的部署与基础配置,实际生产环境中,还需结合SSL证书、负载均衡、日志分析等高级功能进行扩展,建议参考Nginx官方文档获取更多优化方案。
















