网站使用nginx 加tomcat,后端tomcat处理请求。 现在想配置多个二级域名,比如 主站是
www.test.com 新闻版块想配置成 news.test.com. 对应的项目是tomcat里面的 xinwen 。 论坛版块想配置成 forum.test.com, 对应tomcat下下面的luntan项目。 浏览器浏览的时候 news.test.com 地址栏不变,不要变成news.test.com/news 这样的。 请教如何配置? 感谢您的回答
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要在Nginx中配置多个二级域名,每个二级域名指向Tomcat中的不同项目,您需要按照以下步骤进行配置:
确保DNS设置:首先,确保您的DNS解析已正确设置,使得每个二级域名(news.test.com、forum.test.com)都能解析到您的服务器IP地址。
修改Nginx配置文件:编辑Nginx的配置文件,通常是/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
,根据实际情况可能有所不同。在http或server块内添加新的server块来定义每个二级域名的处理规则。
下面是一个示例配置,展示了如何为两个二级域名分别配置不同的Tomcat上下文路径:
server {
listen 80;
server_name news.test.com;
location / {
proxy_pass http://localhost:8080/xinwen; # 假设Tomcat运行在8080端口,xinwen是项目名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name forum.test.com;
location / {
proxy_pass http://localhost:8080/luntan; # 同上,luntan是另一个项目名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这段配置做了以下几件事: - listen 80;
指定监听80端口。 - server_name
定义了每个server块对应的二级域名。 - location / { ... }
配置了URL路径的代理转发规则,这里将所有请求直接转发到指定的Tomcat应用上下文路径,保持地址栏不变。 - proxy_pass
设置了请求被转发到的Tomcat地址和上下文路径。 - proxy_set_header
设置了传递给后端服务器的HTTP头信息,以便于正确的处理请求。
重启Nginx服务:保存配置文件后,使用命令重启Nginx服务以使更改生效。通常可以使用如下命令:
sudo service nginx restart
确认Tomcat配置:确保Tomcat中的两个项目(xinwen和luntan)已经部署,并且能够独立运行在不同的上下文路径下。
完成以上步骤后,访问news.test.com和forum.test.com时,应该能直接看到对应Tomcat项目的内容,而地址栏保持不变。