使用反向代理在Tomcat子文件夹中部署Java Web
我无法将Java Web项目部署到Tomcat 在localhostdevelopment环境中,我可以成功地部署它。我可以通过访问http://localhost:8080/project. 我尝试在服务器上部署它。当然,我可以使用http://server_ip:8080/project. 如您所见,该项目位于TOMCAT_HOME/webapps/project中 当我将其与Nginx支持的反向代理一起使用时。以下是Nginx的配置:使用反向代理在Tomcat子文件夹中部署Java Web,java,tomcat,deployment,nginx,dns,Java,Tomcat,Deployment,Nginx,Dns,我无法将Java Web项目部署到Tomcat 在localhostdevelopment环境中,我可以成功地部署它。我可以通过访问http://localhost:8080/project. 我尝试在服务器上部署它。当然,我可以使用http://server_ip:8080/project. 如您所见,该项目位于TOMCAT_HOME/webapps/project中 当我将其与Nginx支持的反向代理一起使用时。以下是Nginx的配置: server { listen 8
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080/project;
}
}
通常,我可以使用http://example.com nginx将从中获取内容http://127.0.0.1:8080/project. 是的,但我在获取静态文件时遇到问题
我使用标记加载静态文件:
<link rel="stylesheet" type="text/css" href="<c:url value="/assets/css/style.css" />" />
当我使用http://server_ip:8080/project,一切正常。href的值将是/project/assets/css/style.css
但是当我使用http://example.com,href的值仍然是/project/assets/css/style.css,因此我将得到一个404错误。因为这个URL的意思是/project/project/assets/css/style.css。但是,该文件位于/assets/css/style.css中
有人能帮我解决这个问题吗?Thx很多。尝试进行如下明确的位置匹配:
server {
listen 80;
server_name example.com;
location ^~ /project {
proxy_pass http://127.0.0.1:8080/project;
}
location ^~ / {
deny all;
}
}
解释:
位置^~/project{}注意:不适用于正则表达式
^~导致请求开头的匹配区分大小写。这意味着/project、/project/logo.jpg等都将匹配。这也会在符合匹配条件时立即停止位置扫描。我使用以下配置解决了此问题 以下是nginx.conf: 下面是${TOMCAT_HOME}/conf中的server.xml: 在引擎标签中添加以下内容
当我重新启动nginx时,我收到以下错误消息:重新启动nginx守护程序:nginxnginx:[emerg]duplicate location/in/etc/nginx/nginx.conf。错误非常明显。检查NginX配置中是否存在位置“/”的重复定义听起来问题出在JSTL标记中,您的javawebapp正在服务器端呈现它的值,而它对它前面的代理一无所知。您是否尝试过将其更改为相对URL?将其更改为,或使用的上下文属性
server {
listen 80;
server_name example.com;
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~* ^.+.(css|js|jpeg|jpg|gif|png|ico|svg|eof|otf|ttf|woff) {
root /usr/local/tomcat/webapps/AppName/;
expires 24h;
access_log off;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
}
<Host name="example.com" appBase="webapps/AppName"
unpackWARs="true" autoDeploy="true">
<Alias>www.example.com</Alias>
<Context path="" docBase="${catalina.base}/webapps/AppName"
reloadable="true" allowLinking="true">
</Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="appname_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>