1、前言

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

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

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

網(wǎng)友評(píng)論