我有两台Linux服务器通过交叉连接电缆连接,内部IP地址为192.168.0.1(hostA)和192.168.0.2(hostB)。
hostA运行CentOS 5,hostB运行CentOS 7。
host B运行Apache 2.4. x和Tomcat 8.5.9。所有的网络流量都被路由到端口443(例如。HTTPS)的Apache Web服务器主机B。然后,所有Web应用程序流量(例如https://www.example.com/mywebapp/somepage)通过端口8009上mod_jk版本1.2.42传递给Tomcat。另外,host B Apache Web服务器被配置为监听192.168.0.2端口8009(host A Apache Web服务器未被配置为这样)。
如果hostA试图从浏览器或命令行访问hostB上的网页(通过hostB外部IP地址),例如:[root@hostA~]#curl-Ihttp://www.example.com/mywebapp/somepage
它返回状态200(良好)。
现在,如果我修改主机A/etc/host
文件,使得主机A通过交叉连接电缆(例如192.168.0.2而不是外部IP地址)访问主机B网站(www.example.com),网页返回错误404...
我可以更改什么以获得状态200?
我的网址是xxx.xxx.xxx.xxx
(例如:IPv4)。我知道Tomcat默认配置IPv6。所以,我修改了setenv.sh
如下:
CATALINA_OPTS="-Djava.net.preferIPv4Addresses=true"
这并没有改变结果。
作为另一个线索,我观察到hostA在访问www.example中的任何hostB网页时总是报告状态200(良好)。不属于/mywebapp的com,用于内部和外部IP地址。
我应该提到,为了配置hostB(例如192.168.0.2)来监听hostA(例如192.168.0.1),我只添加了
Listen 192.168.0.2:80
Listen 192.168.0.2:443
到host Bhttpd.conf
文件。我没有创建虚拟主机(可以吗?)。我没有修改httpd.conf
。
有什么办法可以解决这个问题吗?我是Tomcat的新手,这是新机器上的新安装。提前谢谢你的建议。
更新1(配置文件)
/etc/httpd/conf/workers.properties(mod_jk,主机B)
# Define one real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
# (don't open 8009 in firewall to outside world)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
以下内容被添加到主机Bhttpd.conf中的预主包含部分:
LoadModule jk_module /etc/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
JkLogFile /etc/httpd/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
以下内容被添加到虚拟主机中的主机httpd.conf包括端口80和443的部分www.example.com外部IP(我需要类似的内部IP吗?这是问题吗?):
# Send all http://example.com/mywebapp/* requests to Tomcat
<IfModule jk_module>
JkMount /mywebapp/* worker1
JkMount /mywebapp worker1
</IfModule>
$CATALINA_HOME/conf/CATALINA/localhost/mywebapp。xml(hostB)
<Context>
<Resource name="jdbc/pool1"
auth="Container"
type="javax.sql.DataSource"
username="uname"
password="pwd"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.1:xxx:xxxx"
maxTotal="256"
maxIdle="8"
initialSize="4"
removeAbandonedTimeout="7200"
removeAbandonedOnBorrow="true"/>
<ResourceLink name="jdbc/pool1"
global="jdbc/dpool1"
type="javax.sql.DataSource"/>
</Context>
$CATALINA_HOME/webapps/mywebapp/WEB-INF/WEB。xml
...
<resource-ref>
<description>Connection pool #1.</description>
<res-ref-name>jdbc/pool1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
$CATALINA_HOME/conf/server。xml(hostB)
<GlobalNamingResources>
...
<Resource name="jdbc/pool1"
auth="Container"
type="javax.sql.DataSource"
username="uname"
password="pwd"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.1:xxx:xxxx"
maxTotal="256"
maxIdle="8"
initialSize="4"
removeAbandonedTimeout="7200"
removeAbandonedOnBorrow="true"/>
</GlobalNamingResources>
我读了(http://httpd.apache.org/docs/2.4/vhosts/examples.html,请参阅第三节,标题为在不同的IP地址(例如内部和外部地址)上提供相同的内容
,可以轻松修改现有虚拟主机(VH)
<VirtualHost xxx.xxx.xxx.xxx:80>
...
</VirtualHost>
要通过这样做来说明本地IP,
<VirtualHost 192.168.0.1:80 xxx.xxx.xxx.xxx:80>
...
</VirtualHost>
其中本地IP还可以包括通配符(例如192.168.0.*)。
问题是我的httpd.conf
文件由每个服务器托管公司的WHM控制/维护,手动编辑将被覆盖。
因此,我唯一的选择是从外部IP地址的httpd.conf
复制现有的整个VH代码(在我的情况下是两个VH部分:端口80和443各一个),并将其粘贴到<-plhd--1/>全局
文件,使用WHM提供的包含编辑器,并将外部IP地址更改为刚刚粘贴的代码的内部IP地址。
请记住,您需要手动维护此部分(因为WHM在更新时不会触碰它,等等)。
问题内容: 我在Windows 7上运行Tomcat 5.5实例(端口:8089)。 如果我打开http:// localhost:8089 / ,服务器将正常运行,但是在http://192.168.1.100:8089/上却给我一个错误(连接被拒绝) 我以为这是防火墙问题…所以我禁用了它,但是我仍然没有运气。 提前致谢。 解决了: 在连接器字符串中添加了 地址=“ 0.0.0.0” ,就可以了
我已经检查了netstat并且能够找到处于侦听状态端口8080 C:\users\administrator>netstat-ano findstr“8080” TCP 0.0.0.0:8080 0.0.0.0:0侦听540 如有任何帮助,我们将不胜感激。谢谢你。
我制作了Spring web应用程序示例项目。我做了所有的基本配置,基于java的配置和servlet 3.0web.xml.但在所有这些配置后,当我打网址它给我404错误。会有什么问题。有人能帮帮我吗? 网状物xml: 配置java类: 控制器: 当我试图访问这个网址 它给我404错误。虽然当我直接访问jsp页面时,它显示该页面。
这是我在stackoverflow中的第一个问题!WOW:) 在这个问题上,我简直不知所措:(我有一个简单的helloworld Web服务,构建WAR文件并将其部署在本地主机上的tomcat(8.0.35)上。明确地说:我刚刚写了一个类,用@WebService注释;然后我写了网络。xml和sun jaxws。xml;我什么都没做!这足以让该类成为Web服务吗?我是否错过了另一步? 问题:网址:
我的spring boot应用程序正常启动,没有任何错误或警告,我在控制台中看到所有URL映射如下所示: 2019-01-25 13:26:56.157 INFO 1020---[ost-startStop-2]S.W.S.M.M.A.RequestMappingHandlerMapping:将“{[/auth/useraccessToken],methods=[POST]}”映射到公共java.
注意:这里有类似的问题,但没有一个解决方案对我有效。我花了几天的时间想把它弄好。 我已经将一个WAR文件部署到Tomcat,“Tomcat Web Application Manager”显示它已经启动。当我点击web应用程序“/forecaster”时,我得到一个404错误。web应用程序在从调试器(IntelliJ)运行时工作。WAR文件名为“forecaster.WAR”,我尝试过的路径是: