Настройте Odoo с Nginx в качестве обратного прокси

Odoo — одно из самых популярных бизнес-программ в мире, оно содержит множество полезных модулей, таких как управление взаимоотношениями с клиентами (CRM), точки продаж, управление проектами, управление запасами, автоматическое выставление счетов, бухгалтерский учет, электронная коммерция, управление запасами и намного больше.

Odoo поставляется со встроенным веб-сервером, но в большинстве случаев рекомендуется иметь перед ним обратный прокси-сервер, который будет действовать как посредник между клиентами и сервером Odoo.

В этом руководстве приведены инструкции по использованию Nginx в качестве завершения SSL и обратного прокси для Odoo.

Подготовка

Прежде чем продолжить работу с этим руководством, убедитесь, что вы выполнили следующие предварительные требования:

  • У вас установлен Odoo, если нет, вы можете найти инструкции здесь
  • У вас есть доменное имя, указывающее на вашу установку Odoo. В этой статье мы будем использовать odoo.example.com .
  • У вас установлен Nginx, если нет, проверьте это руководство.
  • У вас установлен сертификат SSL для вашего домена. Вы можете установить бесплатный SSL-сертификат Let's Encrypt, следуя этому руководству.

Настройте Nginx как обратный прокси

Использование обратного прокси-сервера дает вам множество преимуществ, таких как балансировка нагрузки, завершение SSL, кеширование, сжатие, обслуживание статического содержимого и многое другое.

В этом примере мы настроим завершение SSL, перенаправление HTTP на HTTPS, кэшируем статические файлы и включим сжатие GZip .

Ниже приведен образец файла конфигурации nginx ( серверный блок ), который вы можете использовать для установки Odoo. Все HTTP-запросы будут перенаправлены на HTTPS .

Откройте текстовый редактор и создайте следующий файл:

sudo nano /etc/nginx/sites-enabled/odoo.example.com
/etc/nginx/sites-enabled/odoo.example.com
upstream odoo {
 server 127.0.0.1:8069;
}

upstream odoo-chat {
 server 127.0.0.1:8072;
}

server {
    server_name odoo.example.com;
    return 301 https://odoo.example.com$request_uri;
}

server {
   listen 443 ssl http2;
   server_name odoo.example.com;

   ssl_certificate /path/to/signed_cert_plus_intermediates;
   ssl_certificate_key /path/to/private_key;
   ssl_session_timeout 1d;
   ssl_session_cache shared:SSL:50m;
   ssl_session_tickets off;

   ssl_dhparam /path/to/dhparam.pem;

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
   ssl_prefer_server_ciphers on;

   add_header Strict-Transport-Security max-age=15768000;

   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
   resolver 8.8.8.8 8.8.4.4;

   access_log /var/log/nginx/odoo.access.log;
   error_log /var/log/nginx/odoo.error.log;

   proxy_read_timeout 720s;
   proxy_connect_timeout 720s;
   proxy_send_timeout 720s;
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header X-Real-IP $remote_addr;

   location / {
     proxy_redirect off;
     proxy_pass http://odoo;
   }

   location /longpolling {
       proxy_pass http://odoo-chat;
   }

   location ~* /web/static/ {
       proxy_cache_valid 200 90m;
       proxy_buffering    on;
       expires 864000;
       proxy_pass http://odoo;
  }

  # gzip
  gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
  gzip on;
}

Не забудьте заменить odoo.example.com на свой домен Odoo и указать правильный путь для файлов сертификатов SSL.

Как только вы закончите, сохраните файл и перезапустите службу Nginx с помощью:

sudo systemctl restart nginx

Изменить интерфейс привязки

Это необязательный шаг, но это хорошая практика безопасности.

По умолчанию сервер Odoo прослушивает порт 8069 на всех интерфейсах. Если вы хотите отключить прямой доступ к вашему экземпляру Odoo, откройте файл конфигурации Odoo и добавьте следующие две строки в конец файла:

/etc/odoo.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Сохраните файл конфигурации и перезапустите сервер Odoo, чтобы изменения вступили в силу:

systemctl restart odoo

Выводы

В этом руководстве вы узнали, как настроить Nginx в качестве прокси для вашего приложения Odoo. Вы также можете прочитать о том, как настроить автоматическое резервное копирование Odoo

Оставьте комментарий