Redhat 10 部署Nginx实现多IP/多端口/HTTPS访问(避坑实操+问题全解决)

前言:本文记录基于3台Redhat 10服务器部署Nginx,实现多IP、多端口、多域名及HTTPS访问的完整过程,重点梳理部署中遇到的404、连接失败、域名解析异常等常见问题,附精准解决方案,新手可直接照搬实操,避免踩坑。

核心需求:3台Redhat 10服务器(IP已提前配置),通过Nginx实现以下效果(与目标图完全一致):

  • 访问 172.25.2.129 → 显示 "129"

  • 访问 172.25.2.130 → 显示 "130"

  • 访问 172.25.2.128:9091 → 显示 "9091"

  • 访问 172.25.2.128:9092 → 显示 "9092"

  • 访问 https://www.https.com → 显示 "www.https.com"

环境说明:3台服务器IP分配(可根据自身实际IP修改)

  • node1(主服务器):172.25.2.128(负责多端口、HTTPS、域名访问)

  • node2:172.25.2.129(负责IP直接访问,显示129)

  • node3:172.25.2.130(负责IP直接访问,显示130)

一、前期准备(3台服务器统一执行)

先完成Nginx安装、网页目录创建、权限配置及防火墙放行,为后续部署打下基础,避免因基础环境缺失导致报错。

php 复制代码
# 1. 安装Nginx(Redhat 10 用dnf包管理)
dnf install -y nginx

# 2. 创建网页根目录及对应测试页面(按需求区分目录)
mkdir -p /www/ip129 /www/ip130 /www/9091 /www/9092 /www/https

# 3. 写入测试内容(确保访问后显示对应字符)
echo "129" > /www/ip129/index.html
echo "130" > /www/ip130/index.html
echo "9091" > /www/9091/index.html
echo "9092" > /www/9092/index.html
echo "www.https.com" > /www/https/index.html

# 4. 关键权限配置(Redhat必做,避免权限不足报错)
chown -R nginx:nginx /www  # 给Nginx用户目录权限
chmod -R 755 /www          # 给目录读写执行权限
chcon -R -t httpd_sys_content_t /www  # SELinux网页权限配置

# 5. 防火墙放行所需端口(80、443、9091、9092)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=9091/tcp
firewall-cmd --permanent --add-port=9092/tcp
firewall-cmd --reload

二、Nginx分机配置(按服务器角色分别配置)

核心:3台服务器分工明确,主服务器负责多端口和HTTPS,另外两台负责单一IP访问,配置需简洁精准,避免冗余导致报错。

1. 主服务器(node1:172.25.2.128)配置

负责9091、9092端口访问及HTTPS访问,需配置证书,覆盖默认nginx.conf文件:

php 复制代码
# 重写nginx.conf配置文件
cat > /etc/nginx/nginx.conf << EOF
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # 9091端口配置
    server {
        listen 9091;
        root /www/9091;
        index index.html;
    }

    # 9092端口配置
    server {
        listen 9092;
        root /www/9092;
        index index.html;
    }

    # HTTPS配置(www.https.com)
    server {
        listen 443 ssl;
        server_name www.https.com;

        # SSL证书配置(自签名证书,测试用)
        ssl_certificate /etc/pki/nginx/server.crt;
        ssl_certificate_key /etc/pki/nginx/server.key;

        # 安全配置(可选,提升兼容性)
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        root /www/https;
        index index.html;
    }
}
EOF

# 生成自签名SSL证书(测试专用,生产环境需用正规证书)
mkdir -p /etc/pki/nginx
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/nginx/server.key -out /etc/pki/nginx/server.crt -subj "/CN=www.https.com"

# 重启Nginx生效
systemctl restart nginx
systemctl enable nginx

2. node2(172.25.2.129)配置

仅负责IP访问,显示"129",配置极简,避免多余配置导致404:

php 复制代码
# 重写nginx.conf,仅保留核心配置
cat > /etc/nginx/nginx.conf << EOF
worker_processes auto;
events { worker_connections 1024; }
http {
    server {
        listen 80;  # 监听80端口(默认HTTP端口)
        root /www/ip129;  # 对应网页目录
        index index.html;  # 默认首页
    }
}
EOF

# 重启Nginx生效
systemctl restart nginx
systemctl enable nginx

3. node3(172.25.2.130)配置

与node2配置逻辑一致,仅修改网页目录,显示"130":

php 复制代码
# 重写nginx.conf
cat > /etc/nginx/nginx.conf << EOF
worker_processes auto;
events { worker_connections 1024; }
http {
    server {
        listen 80;
        root /www/ip130;
        index index.html;
    }
}
EOF

# 重启Nginx生效
systemctl restart nginx
systemctl enable nginx

三、部署报错排查与解决方案(重点!)

实操中遇到多个典型报错,以下是报错现象、原因分析及精准解决方案,与本人实际部署过程完全一致,新手可直接对照解决。

报错1:curl 172.25.2.129 报 404 Not Found

【现象】访问172.25.2.129时,返回nginx 404页面,其他端口(9091、9092)访问正常。

【原因】1. 网页目录与Nginx配置中的root目录不匹配;2. 目录权限未生效;3. Nginx配置未重启。

【解决方案】登录172.25.2.129执行以下命令,重建目录、重置配置并重启:

php 复制代码
# 重建网页目录及文件(确保路径正确)
mkdir -p /www/ip129
echo "129" > /www/ip129/index.html

# 重新配置权限(避免权限遗漏)
chown -R nginx:nginx /www
chcon -R -t httpd_sys_content_t /www

# 重启Nginx,使配置和权限生效
systemctl restart nginx

报错2:curl 172.25.2.130 报 Could not connect to server

【现象】访问172.25.2.130时,连接失败,提示"Failed to connect to 172.25.2.130 port 80"。

【原因】1. Nginx未启动或未设置开机自启;2. 防火墙未放行80端口;3. Nginx配置错误。

【解决方案】登录172.25.2.130执行以下命令,全面修复:

php 复制代码
# 重建网页文件(确保文件存在)
mkdir -p /www/ip130
echo "130" > /www/ip130/index.html

# 重置Nginx配置(避免配置错误)
cat > /etc/nginx/nginx.conf << EOF
worker_processes auto;
events { worker_connections 1024; }
http {
    server {
        listen 80;
        root /www/ip130;
        index index.html;
    }
}
EOF

# 重启Nginx并设置开机自启
systemctl restart nginx
systemctl enable nginx

# 重新放行防火墙80端口(确保端口开放)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

报错3:curl -k https://www.https.com 报 Could not connect to server

【现象】HTTPS访问失败,提示无法连接443端口,其他端口访问正常。

【原因】1. SSL证书未生成或生成路径错误;2. Nginx未重启,HTTPS配置未生效;3. 防火墙未放行443端口。

【解决方案】登录主服务器(172.25.2.128)执行以下命令:

php 复制代码
# 重新生成SSL证书(确保路径和域名正确)
mkdir -p /etc/pki/nginx
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/nginx/server.key -out /etc/pki/nginx/server.crt -subj "/CN=www.https.com"

# 重启Nginx,使HTTPS配置生效
systemctl restart nginx

# 确认防火墙443端口已放行(若未放行,执行以下命令)
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

报错4:curl www.test.com 卡住(无响应)

【现象】访问域名时卡住,无法返回内容,IP访问正常。

【原因】本地hosts文件未配置域名解析,导致无法将域名映射到主服务器IP。

【解决方案】在测试机器(或主服务器)配置hosts解析:

php 复制代码
# 写入hosts文件,映射域名到主服务器IP
echo "172.25.2.128 www.test.com" >> /etc/hosts
echo "172.25.2.128 www.exam.com" >> /etc/hosts
echo "172.25.2.128 www.https.com" >> /etc/hosts

四、最终测试验证(全部成功)

所有问题修复后,在测试机器(或主服务器)执行以下curl命令,验证所有需求是否实现:

五、总结与避坑要点

本次部署基于3台Redhat 10服务器,实现了Nginx多IP、多端口、HTTPS访问,核心避坑点如下,新手必看:

  • Redhat系统必须配置SELinux权限(chcon命令),否则会因权限不足导致404或访问失败,这是Redhat与其他Linux系统的核心区别。

  • Nginx配置需简洁,避免冗余,尤其是单一IP访问的服务器,仅保留监听端口、根目录、首页三个核心配置即可。

  • SSL证书生成时,需确保域名(CN)与配置中的server_name一致,否则HTTPS访问会报错。

  • 所有配置修改后,必须重启Nginx才能生效,防火墙规则修改后需reload生效,这是最容易遗漏的步骤。

  • 域名访问前,必须配置hosts解析(测试环境),否则会出现域名无法解析、访问卡住的问题。

本文所有命令均经过实际测试,可直接复制执行,无需修改逻辑(仅需根据自身服务器IP调整即可),适合新手入门实操,也可作为企业测试环境部署参考。

相关推荐
2501_915921432 小时前
2026 iOS 上架新趋势 iOS 发布流程模块化
android·ios·小程序·https·uni-app·iphone·webview
sunwenjian8862 小时前
Nginx 的 proxy_pass 使用简介
运维·nginx
xiaohe073 小时前
nginx 代理 redis
运维·redis·nginx
611#3 小时前
2026 年海外代理 IP 服务商评测:住宅代理、纯净度、稳定性与可用性横向对比
大数据·网络协议·tcp/ip
同聘云3 小时前
阿里云国际服务器动态IP连不上是怎么回事?服务器的ip地址怎么查?
服务器·tcp/ip·阿里云
上海云盾安全满满3 小时前
使用高防IP防护有哪些优势
运维·网络·tcp/ip
亿牛云爬虫专家3 小时前
极速上手:Puppeteer + 原生代理IP 突破无头检测(金融与突发新闻抓取 Cheat Sheet)
tcp/ip·金融·爬虫代理·puppeteer·代理ip·突发新闻·即时采集
gechunlian883 小时前
Nginx多域名,多证书,多服务配置,实用版
运维·网络·nginx
qqty12173 小时前
Nginx反向代理出现502 Bad Gateway问题的解决方案
运维·nginx·gateway