我在我的VPS上部署war文件时遇到了很多问题。
我有java-8和tomcat-8。我的服务器是Apache / 2.2.22(Debian),我的HTTP在端口80上,tomcat在8080上。
目前,如果您访问www.drew-jocham.com,则会列出一个空目录。但是,如果您访问www.drew-jocham.com:8080/resumesite,您将获得在tomcat上运行的页面。
当然,我要做的是让用户输入www.drew-jocham.com而不是端口等。
到目前为止,我已在nano /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin drew@drew-jocham.com
ServerName www.drew-jocham.com
ServerAlias drew-jocham.com
ProxyPass /resumesite http://localhost:8080/resumesite
ProxyPassReverse /resumesite http://localhost:8080/resumesite
</VirtualHost>
在tomcat的server.xml文件中,我设置了<Host></Host>
<Host name="www.drew-jocham.com" appbase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="resumesite_log." suffix=".txt"
pattern="common"/>
</Host>
通过上面的设置,每个域名都会列出我的VPS目录。此时我不知道该怎么做。
我的问题是:
我希望用户输入www.drew-jocham.com而不是www.drew-jocham.com:8080/resumesite。我试图这样做,但就像我上面说的那样,我的VPS上的每个域都只是用上述设置列出我的服务器整个目录。
很快所有网站都将成为战争文件,因此服务器上会有多个域名。有些将直接存储在tomcat webapps中,有些则存储在端口80上的HTTP服务器上。
-------------------更新1 -------------------
我去nano /etc/apache2/sites-enabled/000-default.conf
添加了以下内容并重新启动了我的tomcat服务器。
<VirtualHost *:80>
ServerAdmin drew@drew-jocham.com
ServerName www.drew-jocham.com
ServerAlias drew-jocham.com
ProxyPass / http://localhost:8080/resumesite
ProxyPassReverse / http://localhost:8080/resumesite
</VirtualHost>
当我去www.drew-jocham.com时,除了以下图片之外,仍然没有任何渲染:
此外,它还将www.drew-jocham / resumesite添加到我的VPS上的每个域中,其中我有几个,从而打破了它们。
但是,如果我仍然转到www.drew-jocham.com:8080/resumesite
它会渲染。
答案 0 :(得分:4)
我读了您的问题,因为您希望www.drew-jocham.com的根目录为您提供TomCat服务的内容http://localhost:8080/resumesite
<VirtualHost *:80>
ServerAdmin drew@drew-jocham.com
ServerName www.drew-jocham.com
ServerAlias drew-jocham.com
ProxyPass / http://localhost:8080/resumesite
ProxyPassReverse / http://localhost:8080/resumesite
</VirtualHost>
这篇关于反向代理的数字海洋指南很好地阅读了这个主题,并且包含了许多你认为有用的Apache配置项(比如SSL) - https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension
答案 1 :(得分:1)
步骤1: - 在tomcat8 server.xml中添加以下配置
<Host name="www.drew-jocham.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>www.drew-jocham.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="$logprefix$." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="$RESUMESITEFOLDER$">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
</Host>
在apache中创建一个包含以下内容的网站
<VirtualHost www.drew-jocham.com>
ProxyPreserveHost On
ServerName www.drew-jocham.com
ServerAlias www.drew-jocham.com
Proxy Pass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
以上版本适用于我的https://smartvocab.in
答案 2 :(得分:1)
您需要按照以下步骤操作:
第1步: 在配置Apache之前,您应该启用必要的模块。
a2enmod proxy
a2enmod proxy_http
第2步:
接下来,您将修改000-default.conf
内的默认配置文件/etc/apache2/sites-enabled
以设置“代理”功能。
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
ServerName localhost
</VirtualHost>
第3步: 接下来,您将修改server.xml文件。
<Host name="www.drew-jocham.com" appbase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="resumesite_log." suffix=".txt"
pattern="common"/>
<Context path="" docBase="/resumeSite" debug="0" reloadable="true"/>
</Host>
完成配置后,您需要重新启动云服务器才能使更改生效。执行以下命令重新启动Apache:service apache2 restart
就是这样!
了解详情:https://medium.com/@ldclakmal/deploy-a-java-web-application-in-digitalocean-882226dcdbd5
答案 3 :(得分:0)
您启用apache时需要几个选项,例如vhost_alias,proxy_ajp和mod_jk。你的tomcat也需要启用ajp。 将其添加到您的apache配置:
ServerName "yourdomain.com:80"
ServerAlias "www.yourdomain.com"
ServerAlias "ipv4.yourdomain.com"
UseCanonicalName Off
<IfModule mod_jk.c>
JkMount /yourapp ajp13
JkMount /yourapp/* ajp13
JkMount / ajp13
JkMount /* ajp13
</IfModule>