对不起,这是我第一次尝试Nginx-Jetty而不是Apache-JK-Tomcat。
我将myapp.war文件部署到了$ JETTY_HOME / webapps /,并且可以通过以下URL访问该应用程序:
HTTP:// MYIP:8080 / MYAPP
我做了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的索引页面(运行在docker),这很好。 但所有的链接都是畸形的。 例如。 到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/
任何想法缺less什么? 我需要改变docker上的任何东西吗?
现在不是nginxconfiguration问题,而是你的应用程序或Jettyconfiguration问题。 你在Jetty下运行的应用程序仍然认为它的URL是/ myapp / not /,你应该改变你的应用程序configuration以使用正确的基本URL。
理论上,服务器可以在将应用程序响应传递回客户端时重写链接(具有正确模块的Apache可以这样做,我不确定nginx),但是只有在无法修复代理的应用程序或服务器时,这才是一个好主意-传递给。
你也可以使用Nginx的重写模块 。
这听起来像你的问题是在Jetty,应用程序级别之前 – 如果不是,你可以使用Tuckey的URL重写filter。 两者都非常容易使用。 塔基在http://tuckey.org/urlrewrite/