1、前言

最近在項目中用nginx做反向代理,需要動態(tài)生成nginx的配置。大概流程是用戶在頁面上新增域名、http或https協(xié)議以及端口信息,后臺會根據(jù)域名自動生成一個nginx的server配置,在nginx.conf配置文件中使用include將所有的server配置加載進(jìn)來。遇到一個問題就是如何動態(tài)生成nginx的配置,以及配置更新。在此之前也接觸過配置生成及更新,當(dāng)時配置的格式都是基于xml的,使用protobuf與xml結(jié)合,先采用protobuf定義好配置的數(shù)據(jù)結(jié)構(gòu),然后將protobuf轉(zhuǎn)換為xml配置文件。配置更新通過判斷配置文件的md5是否發(fā)生變化進(jìn)行。而如今接觸的配置是nginx的配置,是一套自定義的配置??戳艘谎踤ginx的配置源碼,用一個void**** conf 來表示,頓時嚇?biāo)缹殞毩耍ぐ葑髡呔幊碳寄?。nginx配置代碼內(nèi)存組織是相當(dāng)?shù)呐1?,通用性非常?qiáng),有興趣可以認(rèn)真研究一下。我要自動生成的配置是如下所示:

復(fù)制代碼
upstream www_test {
    server 196.75.121.112:443; (動態(tài)生成) }

server {
    listen 443 ssl; (動態(tài)生成) server_name  www.test.com; (動態(tài)生成) ssl_protocols TLSv1 TLSv1.1 TLSv1.2;; 
    ssl_certificate /home/build/openresty/nginx/cert/dealssl/www.bestenover.com.crt; (動態(tài)生成) location / { 
        proxy_pass https://
        		

網(wǎng)友評論