AWS多域名网站部署求助:未注册域名仅持有Elastic IP
无注册域名时,AWS EC2上多子域名Nginx部署方案
方案一:本地Hosts映射延续开发模式(仅测试用)
- 在本地Hosts文件中添加EC2弹性IP与各子域名的映射,格式如下(替换
1.2.3.4为你的EC2弹性IP):
(Windows路径:1.2.3.4 teacher.xxxx.cn 1.2.3.4 ucenter.xxxx.cn 1.2.3.4 www.xxxx.comC:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts) - EC2上部署Nginx,配置文件基本沿用开发时的内容,仅需调整后端服务地址(若后端不在同一EC2实例,替换为对应私有IP):
upstream uidevserver{ server 127.0.0.1:8602 weight=10; } upstream gatewayserver{ server 127.0.0.1:xxxx; # 替换为网关服务实际端口/私有IP } server { listen 80; server_name teacher.xxxx.cn; ssi on; ssi_silent_errors on; location / { proxy_pass http://uidevserver; } location /api/ { proxy_pass http://gatewayserver/; } } server { listen 80; server_name ucenter.xxxx.cn; ssi on; ssi_silent_errors on; location / { alias /path/to/your/project/ucenter/; # 替换为EC2上的静态文件路径 index index.html index.htm; } location /include { proxy_pass http://127.0.0.1; } location /img/ { proxy_pass http://127.0.0.1/static/img/; } location /api/ { proxy_pass http://gatewayserver/; } } - 配置EC2安全组开放80端口,仅允许你的本地IP访问(避免无关公网请求)
方案二:IP+路径前缀替代子域名(无需修改本地Hosts)
如果不想修改本地Hosts,可通过路径前缀区分不同服务,将原有的子域名逻辑转为IP下的不同路径:
- 调整Nginx配置,合并所有server块,用location路径对应原服务:
upstream uidevserver{ server 127.0.0.1:8602 weight=10; } upstream gatewayserver{ server 127.0.0.1:xxxx; } server { listen 80; server_name _; # 匹配所有访问IP的请求 # 对应原teacher.xxxx.cn服务 location /teacher/ { ssi on; ssi_silent_errors on; rewrite ^/teacher/(.*)$ /$1 break; # 去掉路径前缀,避免后端收到错误路径 proxy_pass http://uidevserver; } # 对应原ucenter.xxxx.cn服务 location /ucenter/ { ssi on; ssi_silent_errors on; alias /path/to/your/project/ucenter/; index index.html index.htm; rewrite ^/ucenter/(img|include)/(.*)$ /$1/$2 break; # 修正静态资源路径 } # 统一处理所有/api路径 location /api/ { proxy_pass http://gatewayserver/; } } - 访问方式:用
http://你的弹性IP/teacher/访问原teacher子域名服务,http://你的弹性IP/ucenter/访问原ucenter子域名服务
注意事项
- 以上两种方案均仅适合测试/开发阶段,正式环境必须注册域名并配置DNS解析到弹性IP,才能实现公网用户正常访问多子域名服务。
- 确保EC2上的所有后端服务(如uidevserver、gatewayserver)已正常启动,且内部端口可访问。
内容的提问来源于stack exchange,提问作者Alan Liu
相关产品推荐
相关产品推荐

