You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何配置Nginx实现域名访问带非80端口IP且显示自定义域名?

这问题我碰到过好多次了,用Nginx反向代理就能完美解决——既不用暴露后端的IP:端口,地址栏还能一直显示你的自定义域名。下面一步步来操作:

前置准备

  • 确保你的自定义域名已经通过A记录解析到运行Nginx的服务器IP(注意:这里解析的是Nginx服务器的IP,不是那个1.2.3.4
  • 已经在服务器上安装好Nginx(如果没装,用包管理器比如apt install nginx或者yum install nginx就能搞定)
  • 目标服务(1.2.3.4:84)能被Nginx服务器正常访问(可以用curl 1.2.3.4:84测试连通性)

Nginx配置步骤

  1. 打开Nginx的站点配置文件,通常在/etc/nginx/sites-available/目录下,新建一个配置文件比如your-domain.conf,或者直接编辑默认的default文件。
  2. 添加以下配置块,替换其中的占位符:
server {
    listen 80;
    # 替换成你的自定义域名,支持带www的二级域名
    server_name your-domain.com www.your-domain.com;

    location / {
        # 替换成目标服务的IP和端口
        proxy_pass http://1.2.3.4:84;
        # 传递原始请求的Host头,让后端服务知道是哪个域名访问的
        proxy_set_header Host $host;
        # 传递真实客户端IP给后端服务
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 传递当前请求的协议(HTTP/HTTPS)
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. 如果是新建的配置文件,需要创建软链接到sites-enabled目录,让Nginx加载它:
ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/

测试与生效

  1. 先检查Nginx配置是否有语法错误:
nginx -t

如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful就说明没问题。
2. 重启Nginx让配置生效:

systemctl restart nginx

现在你访问http://your-domain.com,地址栏会一直显示你的域名,而实际请求会被Nginx悄悄转发到1.2.3.4:84,完全看不到后端的IP和端口。

额外提示(可选)

如果想启用HTTPS(现在建议网站都用HTTPS),可以用Let's Encrypt免费证书快速配置:

  1. 安装certbot工具:
apt install certbot python3-certbot-nginx
  1. 自动生成证书并配置Nginx的HTTPS转发:
certbot --nginx -d your-domain.com -d www.your-domain.com

执行完之后,certbot会自动修改你的Nginx配置,把所有HTTP请求重定向到HTTPS,同时地址栏依然保持显示你的自定义域名。

内容的提问来源于stack exchange,提问作者Eric Lima

火山引擎 最新活动