odoo系统的Nginx配置https证书及微信域名业务认证

提要
  • 1、上篇讲完用docker部署完odoo后,odoo系统页面加载是非常缓慢,而且经常出现中断、白屏等现象。
  • 2、nginx 配置 微信小程序 业务域名 认证 。
  • 3、系统环境同上篇:阿里云ubuntu16.04。
  • 4、nginx安装在宿主机上。

一、准备资料

  • 1、安装nginx

nginx官方tar.gz包连接 (根据需求下载最新的稳定版)
参考csdn博文:LINUX安装nginx详细步骤

  • 2、申请ssl证书,并上传到服务器
$cd /etc/nginx/ssl
$rz #选择要上传的ssl文件如:www.xxx.com.key www.xxx.com.pem
  • 3、登陆微信公众号平台下载 域名业务 认证文件

二、配置文件

$vi /etc/nginx/nginx.conf

# ---内容如下---
##
#全局配置
#
user www-data;        # 配置worker进程的用户和组
worker_processes 2;   # 配置worker进程启动的数量,建议根据cup核心数
pid /run/nginx.pid;   # 配置记录主进程ID的文件
worker_rlimit_nofile 1536; # 配置一个工作进程能够接受并发连接的最大数

##
# 工作模式及连接数上限
#
events {
	# 单个后台worker_process进程的最大并发连接数
	# 并发总是 max_clients = worker_professes * worker_connetctions
	worker_connections 768; # 默认值1024
	
	# multi_accept on; # 指明 worker 进程立刻接受新的连接
    
    # epoll是多路复用IO(I/Omultiplexing)中的一种方式
    #仅用于liunx2.6 以上内核,可以大大提高Nginx的性能
    use epoll;
}

##
# http模块
#

http {
	##
	# Basic Settings 基础设置
	## 

    # sendfile 指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,
    #以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime.
    sendfile on; 
	tcp_nopush on;  # buffer累积到一定大小后发送
	tcp_nodelay off; # 如打开on:尽快发送数据,启用了buffer,关闭此功能等待buffer再发送
	keepalive_timeout 65;  # 连接超时时间
	types_hash_max_size 2048; # 指定散列型表的最大大小
	# server_tokens off;

     # http_proxy 设置
     client_max_body_size 10m;
     client_body_buffer_size 128k;
     # 设置proxy转发模块超时设置_t
     proxy_read_timeout 60s;
	 proxy_connect_timeout 60s;
	 proxy_send_timeout 60s;
	 
	 # 设置 buffer 缓存功能 建议在server里面设置
	 # proxy_buffer_size 4k;
     # proxy_buffers 4 32k;
     # proxy_busy_buffers_size 64k;
     # proxy_temp_file_write_size 64k;
     # proxy_temp_path /usr/local/nginx/proxy_temp 1 2;

	# server_names_hash_bucket_size 64; # this seems to be required for some vhosts
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;  # 设定mine类型
	default_type application/octet-stream;

     # 设定请求缓冲
     client_header_buffer_size    128k; # 指定客户端请求头缓存大小,当请求头大于 1KB 时会用到该项
     large_client_header_buffers  4 128k; # 最大数量和最大客户端请求头的大小

	##
	# SSL Settings
	##
    
    # 启用所有协议,禁用已废弃的不安全的SSL 2 和SSL 3
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on; # 让服务器选择要使用的算法套件

	##
	# Logging Settings 日志设置
	##

	access_log /var/log/nginx/access.log; # 访问日志
	error_log /var/log/nginx/error.log;   # 错误日志

	##
	# Gzip Settings 压缩静态文件设置
	##

	gzip on;
	gzip_disable "msie6";
	gzip_vary on;
    gzip_min_length 1k;  # 设置允许压缩的页面最小字节数,默认值是20,建议大于1k
	# gzip_proxied any;
	# gzip_comp_level 6;
    gzip_buffers 4 128k;
	# gzip_http_version 1.1
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs 虚拟主机配置
	##
	include /etc/nginx/conf.d/*.conf;    # 这个文件夹默认是空的
	include /etc/nginx/sites-enabled/*;  # 开启的server服务配置
}

##
# mail模块(暂时不配置)
##
#mail {
# 	# See sample authentication script at:
# 	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#  
#	# auth_http localhost/auth.php;
# 	# pop3_capabilities "TOP" "USER";
# 	# imap_capabilities "IMAP4rev1" "UIDPLUS";
#  
# 	server {
# 		listen     localhost:110;
# 		protocol   pop3;
# 		proxy      on;
# 	}
#  
# 	server {
# 		listen     localhost:143;
# 		protocol   imap;
# 		proxy      on;
# 	}
#}
  • 2、虚拟服务 odoo服务配置文件:/etc/nginx/sites-available/odoo
    提示1: odoo 配置文件不带后缀
    提示2: 上传微信 业务域名 认证文件 MP_verify_xxx.txt 到 根目录下,然后配置80端口的location指定到该文件进行认证
    提示4: 这里的端口要对应上 odoo容器里面的长轮询poll端口,上篇配置的映射是8071:8071
    upstream odoochat {
    server 127.0.0.1:8071; # odoo服务长连接映射的宿主机端口
    }
$cd /etc/nginx/sites-available/
$vi odoo
# ---内容如下---

##
# 设置上游
##
upstream backend-odoo{
    server 127.0.0.1:8069; # odoo服务映射的宿主机端口
}
upstream odoochat {
    server 127.0.0.1:8071; # odoo服务长连接映射的宿主机端口
}

##
# http服务
#
server{
    listen 80;
    server_name wwww.XXX.com; # 你的域名
    add_header Strict-Transport-Security max-age=2592000; includeSubDomains; preload; # HSTS HTTP 头部标准
    rewrite ^(.*) https://$host$1 permanent;  # 转发到https服务

    # 下面这个是配置微信 业务域名 认证文件目录
    location = /MP_verify_xxx.txt {
        root  /MP_verify_xxx.txt ;
    }
}

server {
     listen 443;
     server_name www.XXX.com XXX.com; 
     
     # 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;
 
     # ssl 配置
     ssl on;
     ssl_certificate_key  /etc/nginx/ssl/www.XXX.com.key; # 配置 key 私钥文件
     ssl_certificate      /etc/nginx/ssl/www.xxx.com.pem; # 配置 pem 证书文件
     ssl_session_timeout 60m;   # 设置超时时间60分钟
     ssl_protocols TlSv1 TLSv1.1 TlSv1.2; #设置SSL/TSL 协议版本号
     ssl_prefer_server_ciphers on;    # 控制密码套件优先级,让那个服务器选择要使用的算法套件
     ssl_buffer_size 14000;  # 减少TLS缓冲区大小,可以显著减少首字节时间(《HTTPS权威指南》P416)

     # log
     access_log /var/log/nginx/odoo.access.log;
     error_log /var/log/nginx/odoo.error.log;
     
     # increase proxy buffer zise
     proxy_buffers 4 16k;
     proxy_buffer_size 32k;
     proxy_busy_buffers_size 64k;
     proxy_max_temp_file_size 512m;
     # force timeout if the backend dies
     # proxy_next_upstream error timeout invalid_header http_500 http_50;

     # 配置 启用静态缓存 减轻odoo服务器的负载
     location ~* /web/static/ {
        #cache static data
        proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://backend-odoo; 
     }
     
     # Redirect longpoll requests to odoo longpolling port
     # 设置反向代理 odoo 长轮询 端口
     location /longpolling {
        proxy_pass http://odoochat;
     }
     
     # Redirect requests to odoo backend server
     # 反向代理 odoo 服务请求 端口
     location / {
         proxy_redirect off;
         proxy_pass http://backend-odoo;
     }
     # common gzip 压缩静态文件
    gzip on;
    gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
    
}
  • 3、提示3:添加 /etc/nginx/sites-enabled/中配置文件的连接,并删除此目录下的default文件:
$ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo
$rm /etc/nginx/sites-enabled/default
  • 4、检查配置文件,并重启odoo服务和nginx服务
    提示3: 如果是根据上篇docker安装的,重启odoo服务如下
# 容器名称为odoo 或者填写容器id
$docker stop odoo
$docker start odoo
$nginx -t 
# 如有提示错误,请根据提示位置改正
$sudo service nginx restart

完成!!!

还有一个小问题:打开odoo系统:poll连接返回的是502,还未得解,欢迎各位小伙伴求解。
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值