GWT应用程序获取“404请求的资源不可用”
我不知道为什么当我访问我的GWT应用程序时,我总是收到“404请求的资源不可用”。我目前正在我的TomEE/8.5.6(7.0.2)上托管我的GWT应用程序。GWT应用程序获取“404请求的资源不可用”
这是情况。
我能够用我的GWT应用程序从 “TomEE Web应用程序管理器” 为(HTTP)://192.168.1.70:8080 /指数
但是,当我输入(HTTP): //www.zethanath.tk在浏览器中,我会得到(HTTPS)://www.zethanath.tk/与HTTP状态404
这里是我的配置的细节。
Ubuntu:/opt/tomcat/webapps$ ls -l
total 20932
drwxrwxr-x 14 tomcat tomcat 4096 Aug 4 11:46 docs
drwxrwxr-x 5 tomcat tomcat 4096 Aug 4 11:46 host-manager
drwxrwxrwx 5 tomcat tomcat 4096 Aug 25 08:46 Index
-rwxrwxrwx 1 tomcat tomcat 21411520 Aug 25 08:46 Index.war
drwxrwxr-x 5 tomcat tomcat 4096 Aug 4 11:46 manager
drwxrwxr-x 3 tomcat tomcat 4096 Aug 8 17:30 ROOT
sudo的纳米000-default.conf
<VirtualHost *:80 >
Protocols h2 http/1.1
ServerAdmin [email protected]
ServerName www.zethanath.tk
ServerAlias servlet.zethanath.tk zethanath.tk
DocumentRoot "/opt/tomcat/webapps/Index"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.zethanath.tk
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
sudo的纳米默认的ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
Protocols h2 http/1.1
ServerAdmin [email protected]
ServerName www.zethanath.tk
ServerAlias servlet.zethanath.tk zethanath.tk
DocumentRoot "/opt/tomcat/webapps/Index"
JKMountCopy On
JKMount /* ajp13_worker
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/zethanath.tk/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/zethanath.tk/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我一直在想,我需要端口8080 “的DocumentRoot” 关联/ opt/tomcat/webapps/Index“,但我不确定如何。
这是我的UFW的细节。路由器。
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
990/tcp ALLOW Anywhere
40000:50000/tcp ALLOW Anywhere
Apache Secure ALLOW Anywhere
8080 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
20/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
40000:50000/tcp (v6) ALLOW Anywhere (v6)
Apache Secure (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
非常感谢帮助。
Uoo,你真的不应该使用DocumentRoot,否则你会暴露整个战争。
您更好地使用mod_proxy的重定向请求到Tomcat的HTTP端口:
ProxyPass/http://localhost:8080/
ProxyPassReverse/http://localhost:8080/
或者,如果你想重定向到Tomcat上下文(前 '索引'。):
ProxyPass/http://localhost:8080/Index/ retry=1
ProxyPassReverse/http://localhost:8080/Index/
Header edit Location ^([^/]*//[^/]*)?/Index/(.*)$ $1/$2
ProxyPassReverseCookiePath /Index/
更多info here https://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html
非常感谢您的回复。这是我的/opt/tomcat/conf/web.xml的内容。请注意,我的GWT应用程序存储在/ opt/tomcat/wepapps /中,名称为Index.war,所以我一直在想我可能不需要在最后配置“welcome-file-list”。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>development</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<mime-mapping>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ai</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aif</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aifc</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aiff</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aim</extension>
<mime-type>application/x-aim</mime-type>
</mime-mapping>
<mime-mapping>
<extension>art</extension>
<mime-type>image/x-jg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asf</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asx</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>au</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avi</extension>
<mime-type>video/x-msvideo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avx</extension>
<mime-type>video/x-rad-screenplay</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bcpio</extension>
<mime-type>application/x-bcpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bin</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>body</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdf</extension>
<mime-type>application/x-cdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cer</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>class</extension>
<mime-type>application/java</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpio</extension>
<mime-type>application/x-cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csh</extension>
<mime-type>application/x-csh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>css</extension>
<mime-type>text/css</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dib</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtd</extension>
<mime-type>application/xml-dtd</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dv</extension>
<mime-type>video/x-dv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dvi</extension>
<mime-type>application/x-dvi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>etx</extension>
<mime-type>text/x-setext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtar</extension>
<mime-type>application/x-gtar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gz</extension>
<mime-type>application/x-gzip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hdf</extension>
<mime-type>application/x-hdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ief</extension>
<mime-type>image/ief</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jar</extension>
<mime-type>application/java-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>java</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpe</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>text/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jsf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jspf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kar</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>latex</extension>
<mime-type>application/x-latex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3u</extension>
<mime-type>audio/x-mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mac</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>man</extension>
<mime-type>application/x-troff-man</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mathml</extension>
<mime-type>application/mathml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>me</extension>
<mime-type>application/x-troff-me</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mid</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>midi</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mif</extension>
<mime-type>application/x-mif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mov</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>movie</extension>
<mime-type>video/x-sgi-movie</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp1</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp2</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp4</extension>
<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpa</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpe</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpeg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpega</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpv2</extension>
<mime-type>video/mpeg2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ms</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nc</extension>
<mime-type>application/x-netcdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oda</extension>
<mime-type>application/oda</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Database -->
<extension>odb</extension>
<mime-type>application/vnd.oasis.opendocument.database</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Chart -->
<extension>odc</extension>
<mime-type>application/vnd.oasis.opendocument.chart</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Formula -->
<extension>odf</extension>
<mime-type>application/vnd.oasis.opendocument.formula</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Drawing -->
<extension>odg</extension>
<mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Image -->
<extension>odi</extension>
<mime-type>application/vnd.oasis.opendocument.image</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Master Document -->
<extension>odm</extension>
<mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Presentation -->
<extension>odp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Spreadsheet -->
<extension>ods</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Text -->
<extension>odt</extension>
<mime-type>application/vnd.oasis.opendocument.text</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Drawing Template -->
<extension>otg </extension>
<mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- HTML Document Template -->
<extension>oth</extension>
<mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Presentation Template -->
<extension>otp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Spreadsheet Template -->
<extension>ots</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet-template </mime-type>
</mime-mapping>
<mime-mapping>
<!-- OpenDocument Text Template -->
<extension>ott</extension>
<mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
</mime-mapping>
<!-- xiph mime types -->
...
</mime-mapping>
<mime-mapping>
<extension>wspolicy</extension>
<mime-type>application/wspolicy+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>Z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<welcome-file-list>
<!-- <welcome-file>index/stockPrices</welcome-file> -->
<!-- <welcome-file>index.html</welcome-file> -->
<!-- <welcome-file>index.htm</welcome-file> -->
<!-- <welcome-file>index.jsp</welcome-file> -->
<!-- <welcome-file>admin.jsp</welcome-file> -->
</welcome-file-list>
</web-app>
server.xml的内容被粘贴在下面。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.tomee.catalina.ServerListener" />
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" xpoweredBy="false" server="Apache TomEE" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
现在,从搜索互联网,有人提到我需要创建符号链接我的GWT应用程序,但我不能确定它是否是正确的。
我的SSL虚拟主机应该如下所示?
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
Protocols h2 http/1.1
ServerAdmin [email protected]
ServerName www.zethanath.tk
ServerAlias servlet.zethanath.tk zethanath.tk
DocumentRoot "/opt/tomcat/webapps/Index"
Alias /Index "/opt/tomcat/webapps/Index"
<Directory "/opt/tomcat/webapps/Index">
Options Indexes FollowSymLinks
AllowOverride NONE
Order allow,deny
Allow from all
</Directory>
<Location "/Index/WEB-INF/">
AllowOverride None
Deny from all
</Location>
JKMountCopy On
JKMount /* ajp13_worker
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/zethanath.tk/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/zethanath.tk/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
这里是“/etc/libapache2-mod-jk/workers.properties”的内容。 workers.tomcat_home = /选择/ Tomcat的 workers.java_home =/usr/lib中/ JVM/JAVA -8- ORACLE/JRE PS =/ worker.list = ajp13_worker worker.ajp13_worker.port = 8009 worker.ajp13_worker。 host = localhost worker.ajp13_worker.type = ajp13 worker.ajp13_worker.lbfactor = 1 worker.loadbalancer.type = lb worker.loadbalancer.balance_workers = ajp13_worker – sethanath
如果你不知道什么我的意思是“暴露整个战争”刚刚打开http://localhost/WEB-INF/web.xml与当前的配置。 –
非常感谢您的回复。另外,有什么办法可以坚持Mod JK?我听说Mod JK更好,所以我从Mod Proxy切换到Mod JK。我不能再切换回来:) – sethanath
另请注意,我在http虚拟主机的末端执行了Mod_rewrite。这篇文章会将用户重定向到SSL vhost,SSL vhost会使用Mod JK将用户重定向到GWT应用程序。 – sethanath