ubuntu上安装、卸载、配置nginx
一、安装 Nginx
1. 更新软件包列表
sudo apt update
2. 安装 Nginx
sudo apt install nginx -y
3. 验证安装
nginx -v
# 输出示例:nginx version: 1.18.0 (Ubuntu)
4. 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
5. 检查服务状态
sudo systemctl status nginx
# 正常应显示 "active (running)"
6. 可以浏览器中测试看看:ip地址:80
二、基础配置(把配置文件独立出来)
1. 配置文件结构
/etc/nginx/
├── nginx.conf # 主配置文件
├── sites-available/ # 可用站点配置
├── sites-enabled/ # 已启用站点(符号链接)
├── conf.d/ # 附加配置
└── snippets/ # 可复用配置片段
2. 修改配置文件,将配置文件的目录独立出来
sudo vim /etc/nginx/nginx.conf
2.1 i进入编辑模式,把第一行user修改为root。找到"Virtual Host Configs"下添加一行include /root/xx/nginx_cfg/*.conf;然后:wq保存退出
/xx/nginx_cfg:是自己在root目录创建的文件夹;自己可自定义
3. 在创建的“/xx/nginx_cfg”目录里新建一个后缀名为conf的配置文件进行配置。
server {
listen 80; #监听端口号,如果没有域名不要用80
server_name localhost; #域名(多个用空格分隔)
charset utf-8;
#静态文件处理
location / {
root /root/html/shiyan-manager/dist; #网站根目录(前端代码打包在服务器位置)
try_files $uri $uri/ /index.html;
index index.html index.htm;
client_max_body_size 2048m;
}
#反向代理配置(指向本地应用)
location /dev-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 2048m;
proxy_pass http://localhost:8080/; #转发到本地的8080端口(后端的端口号)
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4.配置文件写完后,刷新配置,浏览器访问即可
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
三、启动HTTPS
1.登录云服务器数字证书管理服务控制台,生成并下载SSL证书,选择Nginx服务器类型下载
2.把下载的证书上传到Linux服务器,位置自定义,可放在nginx目录
2.1执行以下命令,在Nginx目录下创建一个用于存放证书的目录。
cd /etc/nginx #进入Nginx文件目录。或者自定义目录都行
mkdir cert #创建证书目录,命名为cert。
2.2将证书文件和私钥文件上传到Nginx服务器的证书目录(/etc/nginx/cert)。
3.修改配置
server {
listen 443 ssl;
server_name example.com; #域名
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; #上传的证书
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.key; #上传的证书
# 安全协议和加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# HSTS(强制HTTPS)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
charset utf-8;
#静态文件处理
location / {
root /root/html/shiyan-manager/dist; #网站根目录(前端代码打包在服务器位置)
try_files $uri $uri/ /index.html;
index index.html index.htm;
client_max_body_size 2048m;
}
#反向代理配置(指向本地应用)
location /dev-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 2048m;
proxy_pass http://localhost:8080/; #转发到本地的8080端口(后端的端口号)
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
#填写证书绑定的域名
server_name ;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
4.配置文件写完后,刷新配置,浏览器访问即可
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
四、卸载 Nginx
1. 停止服务
sudo systemctl stop nginx
sudo systemctl disable nginx
2. 卸载软件包
sudo apt purge nginx nginx-common
3. 删除残留文件
sudo rm -rf /etc/nginx /var/log/nginx /var/www/html/*
sudo apt autoremove
五、故障排查
问题现象 | 解决方法 | |
---|---|---|
端口占用 | `sudo ss -tulnp | grep :80` → 结束冲突进程 |
配置语法错误 | sudo nginx -t 检查错误行 | |
403 Forbidden | 检查目录权限:sudo chmod -R 755 /var/www | |
502 Bad Gateway | 确认后端服务是否运行,proxy_pass 地址是否正确 |
六、关键命令总结
功能 | 命令 |
---|---|
测试配置 | sudo nginx -t |
重新加载配置 | sudo systemctl reload nginx |
查看访问日志 | sudo tail -f /var/log/nginx/access.log |
检查运行中的配置 | sudo nginx -T |
1. 所有的 Nginx 配置文件都在/etc/nginx/目录下
2. 主要的 Nginx 配置文件是/etc/nginx/nginx.conf
3. Nginx的启动文件:/sbin/nginx
4. Nginx 日志文件(access.log 和 error.log)定位在/var/log/nginx/目录下