如果文件不存在,nginx转发到tomcat

时间:2017-03-24 20:14:56

标签: nginx

我成功地将nginx转发给了tomcat。现在我希望在'myserver.com'上运行一个静态html页面,在app.myserver.com下运行我的tomcat应用程序。

由于互联网上已经存在未指向app.myserver.com的链接,我需要以某种方式处理。

基本上,我们的想法是让nginx检查请求的静态html文件是否存在。 如果它不存在,它应该将它转发到tomcat(即@app)。这是我目前的配置。

location / {
    root /usr/share/nginx/html;
    try_files / $uri @app;
}


location @app {

#
# Forward SSL so that Tomcat knows what to do
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://tomcat1/;
proxy_set_header X-Forwarded-Proto https;
#proxy_redirect off;
proxy_connect_timeout      240;
proxy_send_timeout         240;
proxy_read_timeout         240;
}

我收到以下错误

2017/03/24 20:49:12 [emerg] 7639#0: "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/sites-enabled/myserver.com:134

我的误解是什么?

1 个答案:

答案 0 :(得分:0)

proxy_pass语句中删除URI。使用:

proxy_pass http://tomcat1;

有关详细信息,请参阅this document

此外,try_files语句中不应包含/try_files $uri @app; 。使用:

d <- c(rexp(1e4, 100), runif(100, max=5e4))
hist(d)