Ubuntu 安装 Nginx并配置反向代理

Ubuntu版本:Ubuntu 24.04.2 LTS


一、安装Nginx

  1. 更新系统软件包

    安装前需确保系统处于最新状态,避免依赖冲突

    bash 复制代码
    sudo apt update && sudo apt upgrade -y
  2. 安装Nginx主程序

    Ubuntu官方仓库已包含稳定版Nginx,直接安装即可

    bash 复制代码
    sudo apt install nginx -y
  3. 验证安装与启动服务

    bash 复制代码
    sudo systemctl start nginx          # 启动服务
    sudo systemctl enable nginx         # 设置开机自启
    sudo systemctl status nginx         # 检查运行状态

    访问http://服务器IP,若显示Nginx欢迎页即安装成功


二、配置反向代理

  1. 创建专用配置文件

    建议在/etc/nginx/sites-available/目录下新建独立配置文件

    bash 复制代码
    sudo nano /etc/nginx/sites-available/reverse-proxy.conf
  2. 编写反向代理规则

    添加以下内容(以代理本地8080端口的服务为例):

    复制代码
    nginx
    复制代码
    server {
        listen 80;
        server_name your-domain.com;  # 替换为域名或IP
    
        location / {
            proxy_pass http://localhost:8080;  # 后端服务地址
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    关键参数说明

    • proxy_pass:后端服务的实际地址(支持IP:端口或域名)
    • proxy_set_header:传递客户端真实信息给后端
  3. 启用配置并测试

    bash 复制代码
    sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/
    sudo nginx -t                  # 检查语法
    sudo systemctl reload nginx    # 热重载配置

三、高级配置(可选)

  1. 负载均衡

    若需代理多个后端服务器,使用upstream模块

    bash 复制代码
    upstream backend {
        server 192.168.1.10:8080 weight=3;  # 权重分配
        server 192.168.1.11:8080;
        least_conn;                          # 最小连接策略
    }
    
    server {
        location / {
            proxy_pass http://backend;      # 指向upstream组
        }
    }
  2. HTTPS加密

    通过Let's Encrypt获取免费SSL证书

    bash 复制代码
    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d your-domain.com

    自动更新证书的定时任务会同步创建。

  3. 性能优化

    nginx.conf中调整全局参数

    bash 复制代码
    http {
        gzip on;  # 启用压缩
        proxy_buffers 8 16k;  # 缓冲区优化
        proxy_connect_timeout 60s;
    }

四、故障排查

  • 日志分析

    bash 复制代码
    tail -f /var/log/nginx/error.log  # 实时查看错误日志
  • 端口占用检查

    bash 复制代码
    sudo lsof -i :80  # 排查端口冲突[6](@ref)
相关推荐
迷茫的大专生4 小时前
高可用总结
redis·mysql·nginx·高可用
问简5 小时前
【ubuntu】在 Ubuntu 26 上屏蔽 Windows 盘
ubuntu
szephyr5 小时前
Nginx 反向代理实战:从 502、跨域到 HTTPS,一次打通
运维·nginx·https·部署·反向代理
迷茫的大专生5 小时前
服务器部署与 MySQL 运维学习笔记:从 Ansible 到高可用与性能优化
mysql·nginx·ansible·mysql优化·keepalive
程曦曦6 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
A心有千千结8 小时前
Nginx网关可观测建设:打通流量入口,加速线上故障诊断
nginx·prometheus·devops
程序员大阳10 小时前
使用Putty登录阿里云Ubuntu ECS服务器方法
ubuntu·云计算·ssh·ecs·putty
Anthony_23110 小时前
Nginx基础
服务器·nginx·http·https·edge浏览器·web
网硕互联的小客服10 小时前
如何在Ubuntu系统上查看和刷新DNS缓存?操作方法与原理解析
运维·服务器·网络·ubuntu
八年。。11 小时前
WSL学习(三)——搭建Linux + C++ + SOME/IP 基础开发环境
开发语言·笔记·ubuntu