温馨提示×

Ubuntu环境下如何安装与配置Nginx

小樊
42
2025-11-02 09:14:44
栏目: 智能运维

一、安装Nginx

  1. 更新软件包列表:运行sudo apt update,确保系统获取最新的软件包信息。
  2. 安装Nginx:执行sudo apt install nginx,安装过程中按提示确认(输入Y),等待安装完成。
  3. 启动并设置开机自启:启动Nginx服务sudo systemctl start nginx;设置开机自动启动sudo systemctl enable nginx
  4. 验证安装
    • 浏览器访问服务器IP地址(如http://your_server_ip),若看到Nginx默认欢迎页面,说明安装成功;
    • 使用命令sudo systemctl status nginx,若显示“active (running)”,则服务正常运行。

二、配置Nginx虚拟主机(站点)

  1. 创建网站根目录:为站点创建专用目录(如example.com),并设置合理权限:
    sudo mkdir -p /var/www/example.com/html  # 创建根目录
    sudo chown -R $USER:$USER /var/www/example.com/html  # 赋予用户所有权(便于后续操作)
    sudo chmod -R 755 /var/www  # 设置目录权限(755为推荐值)
    ```。  
    
  2. 创建测试页面:在根目录下创建index.html,添加简单内容(如Hello World):
    echo "Hello World" | sudo tee /var/www/example.com/html/index.html
    ```。  
    
  3. 创建虚拟主机配置文件:在/etc/nginx/sites-available/目录下新建配置文件(如example.com.conf):
    sudo nano /etc/nginx/sites-available/example.com.conf
    
    添加以下基础配置(按需修改server_nameroot等参数):
    server {
        listen 80;  # 监听HTTP端口(80)
        server_name example.com www.example.com;  # 域名(替换为你的域名)
        root /var/www/example.com/html;  # 网站根目录
        index index.html index.htm;  # 默认首页文件
        location / {
            try_files $uri $uri/ =404;  # 尝试匹配请求文件,未找到则返回404
        }
        # 可选:记录访问日志和错误日志
        access_log /var/log/nginx/example.com_access.log;
        error_log /var/log/nginx/example.com_error.log;
    }
    ```。  
    
  4. 启用虚拟主机:创建从sites-availablesites-enabled的符号链接(Nginx仅加载sites-enabled中的配置):
    sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
    ```。  
    
  5. 测试配置语法:运行sudo nginx -t,若输出“syntax is ok”和“test is successful”,说明配置无错误。
  6. 重载Nginx:应用新配置,无需中断现有连接:
    sudo systemctl reload nginx
    ```。  
    
    
    

三、配置防火墙(若启用UFW) Ubuntu默认使用UFW防火墙,需允许HTTP(80端口)和HTTPS(443端口)流量:

sudo ufw allow 'Nginx Full'  # 允许Nginx的全部流量(HTTP+HTTPS)
sudo ufw status  # 查看防火墙状态(确认规则已添加)
```。  


**四、配置HTTPS(可选,推荐)**
使用Let's Encrypt免费证书实现HTTPS加密:  
1. **安装Certbot**:运行`sudo apt install certbot python3-certbot-nginx`,安装Certbot及Nginx插件。  
2. **获取证书**:执行`sudo certbot --nginx -d example.com -d www.example.com`(替换为你的域名),按提示完成域名验证。  
3. **自动续期**:Let's Encrypt证书有效期为90天,设置自动续期测试:  
   ```bash
   sudo certbot renew --dry-run

若测试成功,证书会在到期前自动续期。

五、常见问题解决

  1. 403 Forbidden错误
    • 检查网站根目录权限:sudo chown -R www-data:www-data /var/www/example.com/html(Nginx默认用户为www-data);
    • 确认根目录下存在index.htmlindex.htm文件。
  2. 端口冲突
    • 运行sudo netstat -tulnp | grep ':80\b',查看是否有其他服务占用80端口;
    • 停止冲突服务(如sudo systemctl stop apache2)或修改Nginx监听端口(修改listen指令)。
  3. 配置测试失败
    • 根据nginx -t输出的错误信息,定位配置文件中的语法问题(如括号不匹配、指令拼写错误)。

0