nginx+resin配置web服务器 访问url不带项目名称,怎么办?

发布于 2021-11-23 04:24:05 字数 3359 浏览 718 评论 8

最近工作中遇到一难题,因为一服务器有多个resin服务,所以考虑用nginx作代理,监听80端口,再按照serverName转发服务到个resin上。现在问题是,虽然nginx起到了代理转发作用,不过在浏览器上访问需要带上相应的项目名才能访问,这让我很不爽,有什么办法可以去掉项目名吗,比如用aaa.ccc.eee而不是aaa.ccc.eee/zhishiku(项目名)就可以访问。以下是我配置文件内容重要部分 ,nginx.conf::

http {


  upstream backend_vv {
        server 127.0.0.1:88;
    }
    include       mime.types;
    default_type  application/octet-stream;


    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';


    #access_log  logs/access.log  main;


    sendfile        on;
    #tcp_nopush     on;


    #keepalive_timeout  0;
    keepalive_timeout  65;


    #gzip  on;


    server {
        listen       80;
        server_name  aaa.ccc.eee;
        charset UTF-8;
        access_log logs/access.log;
        root   /usr/local/resin/webapps/zhishiku;
        index  indexxx.html;
                # root  /home/webuser/zhishiku;
                location / {




#                       if (!-e $request_filename) {
                                proxy_pass http://backend_vv;
#                       }
                }




                location ~ .(jsp|do|xtp|action|htm)$ {
                        proxy_pass http://backend_vv;
                }


                location /WEB-INF {
                        deny all;
                }


                location /logs {
                        deny all;
                }
resin.conf 主要部分为::

<http address="*" port="88"/>

<host id="aaa.ccc.eee" root-directory="webapps/">
                <web-app id="/" document-directory="zhishiku"/>
        </host>

其中zhishiku是我java 工程名称。请各位大侠过来瞧一瞧

 


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

本宫微胖 2021-11-30 02:53:04

这种情况可能比较复杂,需要你看一下返回的页面源码。Rewrite通常只对响应的URL进行重写,但是返回的页面内容并未重写,这点从页面源码就可以看到,所以会出现404。不嫌麻烦的话写RewriteHtml规则吧,不清楚nginx是否有这个功能,apache是有这个模块的,可以对反向代理之后返回的html内容进行重写。

这个功能我以前做过,非常麻烦,即使重写了,也无法保证所有的页面不出问题,有些页面的URL是通过js生成的,不在页面a标签中,这种重写的话会更麻烦。

奈何桥上唱咆哮 2021-11-30 02:52:48

如果把resin服务器http端口改为80 ,那直接访问aaa.ccc.eee(不带项目名zhishiku)没问题

毁梦 2021-11-30 02:52:42

curl -vv http://127.0.0.1:88/ 是resin的欢迎页 curl -vv http://127.0.0.1:88/ zhishiku 是zhishiku这个项目的欢迎页 nginx error.log 日志没输出,access.log就报404错误了,访问路径少了zhishiku所以。。

无声静候 2021-11-30 02:51:00

curl -vv http://127.0.0.1:88/ 

curl -vv http://127.0.0.1:88/zhishiku/
的结果分别是什么?

nginx 开启 error log,调到 info 然后访问 nginx,看看error log输出

梦里兽 2021-11-30 02:40:48

还是不行,报404

后知后觉 2021-11-30 02:35:32

 location / {

        proxy_pass http://backend_vv/zhishiku/;

}

甜柠檬 2021-11-30 02:18:25

同样问题 请问你搞定了吗

岁月打碎记忆 2021-11-29 18:47:35

希望大家给给思路!谢谢了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文