Nginx代理在odoo docker环境

时间:2015-07-31 17:18:52

标签: nginx

在服务器上,我有一个运行odoo的docker容器(来自官方图片)。我想通过https proxiying在网址http://myserver.com/odoo上访问它。我有一个nginx docker容器应该这样做。

Odoo容器已启动

docker run --name odootest --link dbodoo:db -t odoo

Nginx容器已使用--link odootest:odoo启动。

这是我的nginx配置文件

upstream odoo {
            server odoo:8069;

}

# this one for the http to https rewrite
server {

        listen 80;
        listen [::]:80 default ipv6only=on;

        rewrite ^/.*$ https://$host$request_uri? permanent;

        access_log /var/log/nginx/initial.log;
        error_log    /var/log/nginx/initialerror.log;
        rewrite_log on;

}

#this one for the proper nginx job
server {
        listen 443 ;

 <... ssl certificates part >

        location  ^~ /odoo/ {

                  proxy_pass http://odoo/;

                  # force timeouts if the backend dies
                  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

                  # set headers
                  proxy_set_header Host $host/odoo/;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;


                  # Let the OpenERP web service know that we're using HTTPS, otherwise
                  # it will generate URL using http:// and not https://
                  proxy_set_header X-Forwarded-Proto https;

                  proxy_set_header X-Script-Name /odoo/;
                  proxy_redirect http://myserver.com/ https://myserver.com/odoo/;
                  }

}

请求本身的一切正常,但是找不到图像,jquery和js脚本,因为odoo容器返回的html代码看起来像

   <script src="/web/static/lib/es5-shim/es5-shim.min.js" type="text/javascript"></script>
        <script src="/web/static/lib/underscore/underscore.js" type="text/javascript"></script>

并且导航器正在查找myserver.com/web/static/...个位置,而不是myserver.com/odoo/web/static...

我认为这可以通过我的位置部分中的所有proxy_header语句来管理,但似乎没有。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您在代码中使用绝对网址,您应该使用相对网址,例如:

<script src="/web/static/lib/es5-shim/es5-shim.min.js" type="text/javascript"></script>
<script src="/web/static/lib/underscore/underscore.js" type="text/javascript"></script>

应改为:

<script src="web/static/lib/es5-shim/es5-shim.min.js" type="text/javascript"></script>
<script src="web/static/lib/underscore/underscore.js" type="text/javascript"></script>

这样,通过https://myserver.com/odoo/图片/ js / css访问的网站将在https://myserver.com/odoo/web/static/lib/es5-shim/es5-shim.min.js

的相对网址上请求