请原谅我,这是我第一次尝试使用 Nginx-Jetty 而不是 Apache-JK-Tomcat。
我将 myapp.war 文件部署到 $JETTY_HOME/webapps/,并且可以通过以下 url 访问该应用程序:
我做了 Nginx 的默认安装,默认 Nginx 页面可以在 myIP 访问
然后,我将 /etc/nginx/sites-enabled 下的默认域修改为以下内容:
server {
listen 80;
server_name mydomain.com;
access_log /var/log/nginx/localhost.access.log;
location / {
#root /var/www/nginx-default;
#index index.html index.htm;
proxy_pass http://127.0.0.1:8080/myapp/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}
现在,当我点击 myIP 时,我得到了 mypp 的索引页(在码头中运行),这很好。但是所有的链接都是畸形的。例如。css 的链接是 mydomain.com/myapp/css/style.css,而应该是 mydomain.com/css/style.css。它似乎将 mydomain.com 映射到 127.0.0.1:8080 而不是 127.0.0.1:8080/myapp/
知道缺少什么吗?我是否也需要更改 Jetty 方面的任何内容?
现在不是 nginx 配置问题,而是您的应用程序或 Jetty 配置问题。您在 Jetty 下运行的应用程序仍然“认为”其 URL 是 /myapp/ 而不是 /,您应该更改应用程序配置以使用正确的基本 URL。
从理论上讲,当将应用程序响应传递回客户端时,服务器可以重写链接(具有正确模块的 Apache 可以做到这一点,我不确定 nginx),但只有当您无法修复您代理的应用程序或服务器时,这才是一个好主意-传递给。
你也可以使用 Nginx 的重写模块。
听起来您的问题出在 Jetty 中,在应用程序级别之前 - 如果不是,您可以使用 Tuckey URL 重写过滤器。两者都超级容易使用。Tuckey 位于 http://tukey.org/urlrewrite/