Доброго времени суток, глубоко уважаемое сообщество.
На борту имеем:1. nginx/1.10.0 (Ubuntu)
2. odoo 8.0 (OpenERP)Nginx настроен как прокси:
## Odoo Backend ##
upstream odooerpbb {
server 127.0.0.1:8069;
}## https site##
server {
listen 443 ssl default_server;
server_name xxx.com;
root /usr/share/nginx/html;
index index.html index.htm;# log files
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;# ssl files
ssl on;
ssl_ciphers ALL:!ADH:!MD5:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/nginx/ssl/xxx.com.crt;
ssl_certificate_key /etc/nginx/ssl/xxx.com.key;# proxy buffers
proxy_buffers 16 64k;
proxy_buffer_size 128k;
## odoo proxypass with https ##
location / {
proxy_pass http://odooerpbb;
# force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;# set headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_connect_timeout 3000;.
proxy_send_timeout 3000;.
proxy_read_timeout 3000;.
send_timeout 3000;.
}# cache some static data in memory for 60mins
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooerp;
}location ^~ /web/database/ {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/sites-available/htpasswd;
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooerp;
}}
На сайте по пути
"GET /seller/shop/myshop1 HTTP/1.0" 200 -
есть страничка, которую необходимо отобразить по другому доменному имени, без указания длинного пути (/seller/shop/myshop1) как myshop1.ru.Если указать
## odoo proxypass with https ##
location / {
proxy_pass http://odooerpbb/seller/shop/mysqhop1/;
то страницы отображаются не корректно, так как происходит добавление к http://odooerpbb/seller/shop/mysqhop1 страниц от "корневого сайта". Типа:/seller/shop/mysqhop1/website/image/product.template/3_f9a8d3a/image HTTP/1.0" 404
Как следствие - 404.Воозможно вообще настроить так, чтобы по доменному имени открывалась отдельная страница?
> На сайте по пути
> "GET /seller/shop/myshop1 HTTP/1.0" 200 -
> есть страничка, которую необходимо отобразить по другому доменному имени, без указания
> длинного пути (/seller/shop/myshop1) как myshop1.ru.как хотите указать? непонятно поставлен вопрос
> Если указать
> ## odoo proxypass with https ##
> location / {
> proxy_pass http://odooerpbb/seller/shop/mysqhop1/;
> то страницы отображаются не корректно, так как происходит добавление к http://odooerpbb/seller/shop/mysqhop1
> страниц от "корневого сайта". Типа: /seller/shop/mysqhop1/website/image/product.template/3_f9a8d3a/image HTTP/1.0"
> 404
> Как следствие - 404.и правильно будет так вам выдавать, потому что proxy_pass вы указали что передать (доп. мусор в строке).
> Воозможно вообще настроить так, чтобы по доменному имени открывалась отдельная страница?да можно, какое доменное имя у вас и какую страницу вы хотите отобразить? страница на стороне nginx будет или на стороне Odoo?
Давайте уточню.
Страница https://xxx.com/seller/shop/myshop1 должна отображаться по доменному имени https://myshop1.ru
Все страницы генерирует odoo, поэтому на счет мусора в строке я не согласен, так как эта информация нужна odoo для генерирования страниц...>[оверквотинг удален]
>> proxy_pass http://odooerpbb/seller/shop/mysqhop1/;
>> то страницы отображаются не корректно, так как происходит добавление к http://odooerpbb/seller/shop/mysqhop1
>> страниц от "корневого сайта". Типа: /seller/shop/mysqhop1/website/image/product.template/3_f9a8d3a/image HTTP/1.0"
>> 404
>> Как следствие - 404.
> и правильно будет так вам выдавать, потому что proxy_pass вы указали что
> передать (доп. мусор в строке).
>> Воозможно вообще настроить так, чтобы по доменному имени открывалась отдельная страница?
> да можно, какое доменное имя у вас и какую страницу вы хотите
> отобразить? страница на стороне nginx будет или на стороне Odoo?
>страницы отображаются не корректно, так как происходит добавление к http://odooerpbb/seller/shop/mysqhop1 страниц от "корневого сайта". Типа:
>
>/seller/shop/mysqhop1/website/image/product.template/3_f9a8d3a/image HTTP/1.0" 404
>
>Как следствие - 404.А можно эту мысль как-то более технически грамотно донести?
А то вот моему скудному уму эта мысль как-то уж совсем непонятна.
(ИМХО поэтому вам никто и не отвечает)
Можно, только скорее всего не поможет :)
Для тех кто не работал с Odoo или OpenERP архитектура здесь:
https://doc.odoo.com/6.0/ru/book/1/1_1_Inst_Config/1_1_Inst_.../Для нормальной работы сервера приложений ему необходимо передать GET или POST от клиента в неизмененном виде.
Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет страницу с ошибкой.Другими словами не получится показать страницу
https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ru
> А можно эту мысль как-то более технически грамотно донести?
> А то вот моему скудному уму эта мысль как-то уж совсем непонятна.
> Для нормальной работы сервера приложений ему необходимо передать GET или POST от
> клиента в неизмененном виде.
> Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет
> страницу с ошибкой.
> Другими словами не получится показать страницу
> https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ruВ силу каких технических решений, примененных в OpenERP, сервер приложений определит перезапись запроса и возвратит ошибку?
https://www.odoo.com/documentation/8.0/howtos/website.html#u...
http://werkzeug.pocoo.org/docs/0.12/routing/
>> Для нормальной работы сервера приложений ему необходимо передать GET или POST от
>> клиента в неизмененном виде.
>> Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет
>> страницу с ошибкой.
>> Другими словами не получится показать страницу
>> https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ru
> В силу каких технических решений, примененных в OpenERP, сервер приложений определит перезапись
> запроса и возвратит ошибку?
>>> Для нормальной работы сервера приложений ему необходимо передать GET или POST от
>>> клиента в неизмененном виде.
>>> Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет
>>> страницу с ошибкой.
>>> Другими словами не получится показать страницу
>>> https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ru
>> В силу каких технических решений, примененных в OpenERP, сервер приложений определит перезапись
>> запроса и возвратит ошибку?
> https://www.odoo.com/documentation/8.0/howtos/website.html#u...
> http://werkzeug.pocoo.org/docs/0.12/routing/Не вижу на указанных страницах ответа на вопрос, как сервер приложений определит _корректную _перезапись запроса.
>[оверквотинг удален]
>>>> Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет
>>>> страницу с ошибкой.
>>>> Другими словами не получится показать страницу
>>>> https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ru
>>> В силу каких технических решений, примененных в OpenERP, сервер приложений определит перезапись
>>> запроса и возвратит ошибку?
>> https://www.odoo.com/documentation/8.0/howtos/website.html#u...
>> http://werkzeug.pocoo.org/docs/0.12/routing/
> Не вижу на указанных страницах ответа на вопрос, как сервер приложений определит
> _корректную _перезапись запроса.не бывает так корректной перезаписи. и некорректной тоже. есть внутренний роутер который по урлу - сортирует запрос на определенные куски кода. другой урл - другая обработка. исчез из урла хоть байт - все..приехали...
> не бывает так корректной перезаписи. и некорректной тоже.Корректной - не бывает. Некорректной - не бывает.
Т.е. перезаписи запроса не бывает в принципе?
> есть внутренний роутер который по урлу - сортирует запрос на определенные куски кода. >другой урл - другая обработка. исчез из урла хоть байт - все..приехали...
Приехали - выходите.
----
Рекомендую перечитать дискуссию чуть больше, не только отдельный ответ.
Она посвящена ошибочному представлению топикстартера, цитирую:
>Для нормальной работы сервера приложений ему необходимо передать GET или POST от клиента в
>неизмененном виде.
>Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет >страницу с ошибкой.
Эх... такую интригу закончил :)
А я жду когда мистер теоретик-всезнайка прозреет ;)>[оверквотинг удален]
>>>>> https://xxx.com/seller/shop/mysqhop1/ как https://myshop.ru
>>>> В силу каких технических решений, примененных в OpenERP, сервер приложений определит перезапись
>>>> запроса и возвратит ошибку?
>>> https://www.odoo.com/documentation/8.0/howtos/website.html#u...
>>> http://werkzeug.pocoo.org/docs/0.12/routing/
>> Не вижу на указанных страницах ответа на вопрос, как сервер приложений определит
>> _корректную _перезапись запроса.
> не бывает так корректной перезаписи. и некорректной тоже. есть внутренний роутер который
> по урлу - сортирует запрос на определенные куски кода. другой урл
> - другая обработка. исчез из урла хоть байт - все..приехали...
> Эх... такую интригу закончил :)
> А я жду когда мистер теоретик-всезнайка прозреет ;)А чего это вы про себя в третьем лице пишете?
Я тоже всё надеюсь что вы прозреете и решите свою проблему.
Хотя, наверное вам не сильно и надо её решать, если вы решили остановиться на мнении"Если мы попытаемся nginx переписать любую часть запроса, то сервер приложений вернет страницу с ошибкой."
Согласен, ничего не делать гораздо проще.