ما از انجینکس یا nginx به عنوان یک پروکسی معکوس HTTP استفاده می کنیم. اتصالات HTTP و HTTPS ورودی توسط nginx مدیریت می شود که پردازش درخواست ها را به سرور Odoo واگذار می کند. سرور Odoo به گونهای پیکربندی شده است که برای درخواستهای معمولی (http_port) فقط به رابط حلقه محلی (127.0.0.1) در پورت 8069 و برای درخواستهای طولانی نظرسنجی (longpolling_port) در پورت 8072 گوش دهد. ممکن است لازم باشد شماره پورت ها را با پیکربندی خود تطبیق دهید.
به طور معمول شما می توانید سرور odoo خود را با هر پورت باز داخل سرور خود اجرا کنید، فقط باید آن را در Odoo Config خود مشخص کنید (به طور پیش فرض 8069 است). در این مورد، ما در مورد http صحبت می کنیم
نگرانی ما اضافه کردن حرف "s" (مخفف امنیت) در انتهای http (HTTPS) است که برای استفاده از پورت 443 نیاز دارید.
چرا از Nginx استفاده می کنیم؟
ما در اینجا از Nginx به دلایل زیادی استفاده می کنیم:
- Nginx و سایر وب سرورها برای پیاده سازی لایه ssl، ایمن سازی ارتباطات، مدیریت ترافیک داده ها و بهینه سازی عملکرد می آیند. مثل پلیس راهنمایی و رانندگیه
- یک وب سرور منبع باز است (نسخه پولی به نام Nginx plus وجود دارد)
- Nginx در معیارهای سنجش عملکرد وب سرور امتیاز خوبی دارد
- بسیاری از افراد در جامعه Odoo از آن استفاده می کنند.
- این مقاله من است، من می توانم ابزار را انتخاب کنم :D

Nginx را در سرور اوبونتو نصب و راه اندازی کنید:
نصب Nginx در سرور اوبونتو بسیار آسان است، فقط باید این دستورات را اجرا کنید:
sudo apt update
sudo apt install nginx
پس از اتمام نصب، می توانید با استفاده از این دستور وضعیت آن را بررسی کنید:
sudo systemctl status nginx
می توانید نصب خود را با باز کردن http://your_ip_address یا localhost در مرورگر خود بررسی کنید
برای اطلاعات بیشتر می توانید به این آموزش خوب مراجعه کنید. می توانید نصب خود را با باز کردن http://your_ip_address یا localhost در مرورگر خود بررسی کنید.
با دستورات زیر، فایل اجرایی را ایجاد کنید:
sudo mv ~/odoo /etc/nginx/sites-available/$WEBSITE_NAME
sudo ln -s /etc/nginx/sites-available/$WEBSITE_NAME /etc/nginx/sites-enabled/$WEBSITE_NAME
sudo rm /etc/nginx/sites-enabled/default
sudo service nginx reload
دقت کنید که:
$WEBSITE_NAME = نام دامنه شما
و این دستورات را عینا در فایل your_WEBSITE_NAME کپی کنید: ($WEBSITE_NAME = نام دامنه)
server {
listen 80;
# set proper server name after domain set
server_name $WEBSITE_NAME;
# Add Headers for odoo proxy mode
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;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
proxy_set_header X-Client-IP \$remote_addr;
proxy_set_header HTTP_X_FORWARDED_HOST \$remote_addr;
# odoo log files
access_log /var/log/nginx/odoo-access.log;
error_log /var/log/nginx/odoo-error.log;
# increase proxy buffer size
proxy_buffers 16 64k;
proxy_buffer_size 128k;
proxy_read_timeout 900s;
proxy_connect_timeout 900s;
proxy_send_timeout 900s;
# force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502
http_503;
types {
text/less less;
text/scss scss;
}
# enable data compression
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
gzip_vary on;
client_header_buffer_size 4k;
large_client_header_buffers 4 64k;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:8069;
# by default, do not forward anything
proxy_redirect off;
}
location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
expires 2d;
proxy_pass http://127.0.0.1:8069;
add_header Cache-Control "public, no-transform";
}
# cache some static data in memory for 60mins.
location ~ /[a-zA-Z0-9_-]*/static/ {
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
proxy_buffering on;
expires 864000;
proxy_pass http://127.0.0.1:8069;
}
}
دقت کنید که در این تنظیمات، حالت چت، تماس صوتی و ویدیویی وجود ندارد. یعنی حالت چت داخلی اودو و نیز چت انلاین به درستی و بهنگام (real-time) نمی باشد. برای حل این مساله بایستی محصول بالا را خریداری کنید.
البته ممکن است به صورت موقت و بدون ssl به مشکل نخورید، ولی بعدا مشکل ایجاد خواهد شد.
نصب ssl - https
برای نصب ssl در nginx و در سرور اوبونتو، کدهای زیر را وارد کنید و پکیج های مهم را نصب کنید:
sudo apt-get update -y
sudo apt install snapd -y
sudo snap install --classic certbot
sudo apt install certbot
sudo apt-get install python3-certbot-nginx -y
سپس این دستور را بزنید. دقت کنید که ایمیل و نام دامنه را از شما خواهد پرسید و در این دستور، درست وارد کنید:
sudo certbot certonly --agree-tos --email test@example.com --webroot -w /var/lib/letsencrypt/ -d your_domain.com -d www.your_domain.com
Nginx را ریستارت کنید
sudo systemctl restart nginx
تنظیمات مورد نیاز در کانفیگ اودو
پس از تنظیمات nginx (یا حتی قبل از آن)، نیاز است که دستوراتی به فایل کانفیگ اودو اضافه کنید. پس به فایل Odoo.config بروید و این موارد را اضافه کنید:
proxy_mode = True
limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 8
دقت کنید که ورکرر میتواند کمتر باشد و حداقل آن را 2 میتوانید قرار دهید. این بر سرعت سرور شما موثر است. برای جزئیات بیشتر، مستندات اودو را ببینید.