CentOS 7提供了FreeSWITCH的安裝包(編譯自1.6.15版本的源碼)酪呻,可以通過(guò)yum命令直接下載、安裝。
我們?yōu)槭裁礇](méi)有直接使用這個(gè)安裝包揽思,而是選擇直接從源碼編譯FreeSWITCH,是因?yàn)檫@個(gè)安裝包存在如下問(wèn)題:
? ?1)缺少libav庫(kù)见擦。實(shí)現(xiàn)轉(zhuǎn)碼的模塊mod_av依賴該庫(kù)钉汗;
? ?2)缺少mod_rtmp模塊。該模塊支持基于Flash的終端鲤屡。
? ?3)1.6.15版本的源碼损痰,通過(guò)rtmp撥打電話時(shí),會(huì)導(dǎo)致程序崩潰酒来。
我們目前使用的FreeSWITCH源碼版本是1.6.10卢未。
FreeSWITCH官方推薦的CentOS版本,要求至少是CentOS7.0堰汉。CentOS7的安裝本文不講解辽社,請(qǐng)查閱其它資料自行安裝。
以下的過(guò)程假定CentOS已經(jīng)安裝(最小化安裝)
一翘鸭、編譯環(huán)境和FreeSWITCH依賴庫(kù)
? ?1滴铅、讓網(wǎng)卡自動(dòng)啟用
? ? ? CentOS 7安裝后,有時(shí)候網(wǎng)卡并未自動(dòng)啟用就乓,需要修改配置文件失息,讓網(wǎng)卡跟隨系統(tǒng)自動(dòng)啟用。
? ? ? ? 1)進(jìn)入目錄/etc/sysconfig/network-scripts/
? ? ? ? 2) 修改ifcfg-enxxxxxxxx 文件? ?(即你的網(wǎng)卡標(biāo)識(shí)命名的配置文件)
? ? ? ? 3) 將ONBOOT=no改成yes
? ? ? ? 4) 保存后重啟即可
? ? 2档址、會(huì)用到的工具軟件
? ? ? 1)ifconfig工具
? ? ? ?ifconfig常用來(lái)查詢IP地址等信息盹兢,CentOS7最小化安裝時(shí)沒(méi)有安裝這個(gè)工具。
? ? ? ?安裝命令:yum install net-tools.x86_64
? ? ? ?說(shuō)明:
? ? ? ? ? ?也可以使用ip addr命令查看IP地址
? ? ? 2)patch工具
? ? ? ?libav庫(kù)編譯之前需要打一個(gè)補(bǔ)丁文件守伸。patch的安裝命令是:
? ? ? ?yum install patch
? ? ? 3)rzsz工具
? ? ? ?該工具用于配合x(chóng)shell上傳文件到CentOS系統(tǒng)中绎秒,安裝命令是:
? ? ? ?yum install lrzsz
? ? ? ?說(shuō)明:
? ? ? ? ? ?XShell連上CentOS后,直接把文件拖到XShell窗口尼摹,就可以上傳文件到CentOS系統(tǒng)中见芹。
? ? 3剂娄、FreeSWITCH官方環(huán)境和依賴庫(kù)
? ? ? 依次執(zhí)行如下兩條命令,安裝編譯環(huán)境和依賴庫(kù):
? ? ? yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-release
? ? ? yum install -y git gcc-c++ wget alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel db-devel e2fsprogs-devel flite-devel g722_1-devel gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtool libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python26-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel libuuid-devel which yasm zlib-devel
? ? 4玄呛、關(guān)閉防火墻
? ? ? CentOS7的防火墻會(huì)阻止客戶端連接FreeSWITCH阅懦,需要關(guān)閉它。CentOS 7.0默認(rèn)使用的是firewalld防火墻徘铝。
? ? ? ? ? 停止firewalld? ? ? ? :systemctl stop firewalld.service
? ? ? ? ? 禁止firewall開(kāi)機(jī)啟動(dòng) :systemctl disable firewalld.service?
? ? ? 說(shuō)明:
? ? ? ? ? 可以使用systemctl status firewalld.service命令檢查firewalld是否已經(jīng)啟動(dòng)耳胎。
sudo useradd freeswitch
sudo groupadd freeswitch
? ? ? 查看SELinux狀態(tài):
1、/usr/sbin/sestatus -v? ? ? ##如果SELinux status參數(shù)為enabled即為開(kāi)啟狀態(tài)
SELinux status:? ? ? ? ? ? ? ? ?enabled
2惕它、getenforce? ? ? ? ? ? ? ? ?##也可以用這個(gè)命令檢查
關(guān)閉SELinux:
1怕午、臨時(shí)關(guān)閉(不用重啟機(jī)器):
setenforce 0? ? ? ? ? ? ? ? ? ##設(shè)置SELinux 成為permissive模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##setenforce 1 設(shè)置SELinux 成為enforcing模式
2、修改配置文件需要重啟機(jī)器:
修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled
重啟機(jī)器即可
? ? 5淹魄、指定動(dòng)態(tài)鏈接庫(kù)的搜索目錄
? ? ? ?在/etc/ld.so.conf.d目錄下建立一個(gè)文件郁惜,文件名隨便取,例如:locallib.conf甲锡,
? ? ? ?然后在locallib.conf輸入一行:/usr/local/lib兆蕉。
? ? ? ?說(shuō)明:
? ? ? ? ? ?編譯x264和libav時(shí),它們的庫(kù)默認(rèn)會(huì)安裝到/usr/local/lib中缤沦。CentOS 64位版鏈接動(dòng)態(tài)庫(kù)時(shí)默認(rèn)不會(huì)搜索這個(gè)目錄虎韵。
? ? ? ? ? ?為了讓程序鏈接時(shí)可以找到這些庫(kù),需要把 /usr/local/lib 加到動(dòng)態(tài)庫(kù)的搜索列表中
? ? ? ? ? ?安裝動(dòng)態(tài)庫(kù)后疚俱,可以執(zhí)行l(wèi)dconfig刷新劝术。也可以直接重啟電腦缩多,讓系統(tǒng)自動(dòng)刷新呆奕。
二、其它依賴庫(kù)
? ?FreeSWITCH默認(rèn)只支持VP8視頻編碼衬吆,為了支持使用H264編碼的終端梁钾,需要使用libav進(jìn)行轉(zhuǎn)碼。libav庫(kù)依賴x264庫(kù)做H264的編碼逊抡。所以姆泻,
? ?需要先編譯x264庫(kù),然后編譯libav庫(kù)冒嫡。
? ?1拇勃、x264
? ? ?1)獲取源碼
? ? ? ?下載:git clone git://git.videolan.org/x264.git
? ? ?2)編譯、安裝
? ? ? ?tar -xvf x264-20170217.tar.gz
? ? ? ?cd x264
? ? ? ?./configure --enable-static --enable-pic? ? ? ?
? ? ? ?make
? ? ? ?make install
? ? ? ?cp /usr/local/lib/pkgconfig/x264.pc /usr/lib64/pkgconfig/? ?// 用來(lái)讓libav編譯時(shí)孝凌,可以找到x264的庫(kù)?
? ? ? ?ldconfig? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 執(zhí)行刷新方咆,以讓程序運(yùn)行時(shí)可以找到x264的庫(kù)。本例因?yàn)槭褂昧遂o態(tài)庫(kù)蟀架,應(yīng)該不需要這步?
? ? ? ?說(shuō)明:
? ? ? ? ? ?x264提供H264的編碼瓣赂。libav庫(kù)依賴它榆骚。
? ?2、librtmp
? ? ? make
? ? ? make install
? ? ? ?cp /usr/local/lib/pkgconfig/librtmp.pc /usr/lib64/pkgconfig/? ?// 用來(lái)讓libav編譯時(shí)煌集,可以找到x264的庫(kù)?
? ? ? ?ldconfig? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 執(zhí)行刷新妓肢,以讓程序運(yùn)行時(shí)可以找到x264的庫(kù)。本例因?yàn)槭褂昧遂o態(tài)庫(kù)苫纤,應(yīng)該不需要這步?
? ? ? ?說(shuō)明:
? ? ? ? ? ?librtmp提供rtmp的解包碉钠。libav庫(kù)依賴它。
? ?3方面、編譯libav
? ? ? 1)獲取源碼
? ? ? ? ?下載:git clone https://freeswitch.org/stash/scm/sd/libav.git
? ? ? 2)編譯放钦、安裝? ? ? ??
? ? ? ? tar -xvf libav-20170217.tar.gz
? ? ? ? cd libav
? ? ? ? patch -p1 < 0001-Fix-linking-errors-when-VC1-parser-is-enabled-and-VC.patch? ? ? ? ? ? ? ? ? ? ? ?// 打補(bǔ)丁,F(xiàn)reeSWITCH對(duì)libav做了修改
? ? ? ? ./configure --enable-pic --enable-shared? --enable-libx264 --enable-gpl --extra-libs="-ldl"?
? ? ? ? make? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? make install
? ? ? ? ./configure --enable-pic --enable-shared? --enable-libx264 --enable-librtmp --enable-gpl --extra-libs="-ldl"
? ? ? ? cp /usr/local/lib/pkgconfig/libavcodec.pc? ? /usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libavdevice.pc? ?/usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libavfilter.pc? ?/usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libavformat.pc? ?/usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libavresample.pc /usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libavutil.pc? ? ?/usr/lib64/pkgconfig/
? ? ? ? cp /usr/local/lib/pkgconfig/libswscale.pc? ? /usr/lib64/pkgconfig/
? ? ? ? ldconfig? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? 說(shuō)明:
? ? ? ? ? libav是一個(gè)編解碼庫(kù)恭金,F(xiàn)reeSWITCH的轉(zhuǎn)碼模塊mod_av依賴它實(shí)現(xiàn)操禀。
三、編譯FreeSWITCH
? ? ? ? 1横腿、下載
? ? ? ? ? ? git clone -b v1.6 https://freeswitch.org/stash/scm/fs/freeswitch.git freeswitch
2颓屑、配置
? ? ? ? ? ?cd freeswitch-1.6.10
? ? ? ? ? ?./configure --enable-core-pgsql-support
? ? ? ? 3、mod_av和mod_rtmp模塊
? ? ? ? ? ?修改源碼目錄下的modules.conf文件耿焊。
編譯mod_av模塊揪惦,? 把第2行#applications/mod_av前的#去掉
編譯mod_rtmp模塊,把第92行#endpoints/mod_rtmp前的#去掉
? ? ? ? ? ?說(shuō)明:
FreeSWITCH的很多功能模塊會(huì)編譯為動(dòng)態(tài)庫(kù)罗侯,在程序啟動(dòng)時(shí)根據(jù)配置文件加載器腋。我們需要的轉(zhuǎn)碼和rtmp模塊默認(rèn)不被編譯。
在編譯之前钩杰,需要
4纫塌、編譯、安裝
make
make install
? ? ? ? ?5讲弄、聲音文件
四措左、運(yùn)行前配置
? ? 1、加載mod_av和mod_rtmp模塊
?如果需要程序運(yùn)行時(shí)自動(dòng)加載模塊避除,需要修改程序的配置文件怎披,位置在/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml文件
? ? ? 大約104行 ,把注釋去掉瓶摆,讓它生效凉逛。將會(huì)自動(dòng)加載mod_av模塊。
? ? ? 大約49行? 群井,把注釋去掉状飞,讓它生效。將會(huì)自動(dòng)加載mod_rtmp模塊。
? ? ? 說(shuō)明:
? ? ? ? ? ?mod_av模塊提供轉(zhuǎn)碼功能昔瞧。使用h264和vp8的客戶端之間可以進(jìn)行視頻通訊
? ?mod_rtmp模塊實(shí)現(xiàn)了rtmp協(xié)議指蚁。可以讓運(yùn)行在Flash Player中的swf程序和FreeSWITCH通訊自晰。間接讓IE實(shí)現(xiàn)了實(shí)時(shí)通訊凝化。
? ? 2、更改FreeSWITCH默認(rèn)登錄密碼
修改/usr/local/freeswitch/conf/vars.xml酬荞,大約15行
? ? ? ? ? ?
修改為
? ? ? ? ? ?? ? ?
? ? ? ? 說(shuō)明:
? ? 使用FreeSWITCH的默認(rèn)密碼1234登錄搓劫,會(huì)有10秒的延時(shí)。把默認(rèn)密碼改為2345混巧。
? ? 3枪向、增加H264編碼支持
修改/usr/local/freeswitch/conf/vars.xml,大約258和259行咧党,檢查global_codec_prefs和outbound_codec_prefs中是否有H264秘蛔。如下兩行:
? ?
? ?
說(shuō)明:
? ? ?FreeSWITCH的默認(rèn)只支持VP8編碼,如果要使用H264編碼傍衡,需要增加H264深员。
? ? 4、修改WSS端口
? ? ? ?修改/usr/local/freeswitch/conf/sip_profiles/internal.xml蛙埂,大約313行:
? ? ? ? ? ? ?
? 修改為
? ? ?
? ? ? ?說(shuō)明:
? ?WSS端口是WebSocket的安全連接端口倦畅。默認(rèn)是7443,因?yàn)闀?huì)和IM服務(wù)的端口沖突绣的,所以修改為8443叠赐。
? ? ?5、ESL配置
修改/usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml屡江,
? ? 檢查 這樣中的value是不是等于"::"芭概,如不是需要修改;
? ? 修改為
? ?
說(shuō)明:
? ? 使用ESL庫(kù)盼理,默認(rèn)只能連接本機(jī)安裝的FreeSWITCH谈山。如果要連接局域網(wǎng)內(nèi)其它主機(jī)上的FreeSWITCH俄删,則需要做如上修改宏怔。
? ? ? ? ? ? ESL使外部程序可以通過(guò)發(fā)送命令來(lái)控制FreeSWITCH。
? ? ? 6畴椰、為FreeSWITCH增加30000到39999共10000個(gè)號(hào)碼
第一步
? ? ?修改/usr/local/freeswitch/conf/dialplan/default.xml臊诊,大約265行,找到name為L(zhǎng)ocal_Extension的extension斜脂,
? ? ?抓艳,修改如下行的expression屬性
?
修改為:
??
說(shuō)明:
也就是為expression中的正則表達(dá)式,增加一個(gè)條件帚戳,與原來(lái)的條件做或運(yùn)算玷或,這樣新號(hào)碼段和舊號(hào)碼段都可以使用儡首。
新增加部分為:3\d{4}| (注意最后的 | )
這樣修改后,只是說(shuō)明可以路由30000到39999的號(hào)碼了偏友,還需為這些號(hào)碼增加號(hào)碼文件蔬胯。
?第二步
? ? ? ? ? ?復(fù)制1000.xml為30000.xml
? ? ? ? ? ?將30000.xml中所有的1000改為30000
? ?因?yàn)檫@種文件太多,可以使用一個(gè)小工具(FS_PhoneCode.exe)來(lái)生成需要的號(hào)碼文件位他。
? ?生成后氛濒,復(fù)制這些文件到目錄conf/directory/default
? ? ? 7、為FreeSWITCH增加20000到29999共10000個(gè)會(huì)議號(hào)
? 修改/usr/local/freeswitch/conf/dialplan/default.xml,找到name為 cdquality_stereo_conferences 的extension鹅髓。
? ? ? ? ? 它的首行為:舞竿。
? ? 在這個(gè)extension下邊增加一個(gè)新的extension。如下:
?
? ? ? ? ? ? ? ? ? ? ? ?// 注意窿冯,@之前只有$1
說(shuō)明:
? ? ? ? ? ? @之前只有$1骗奖,是為了把會(huì)議名簡(jiǎn)化成會(huì)議后,這樣ESL的命令中就可以直接使用會(huì)議號(hào)醒串,來(lái)識(shí)別或者控制會(huì)議重归。?
? ? ?8、為rtmp客戶端增加路由
? 修改/usr/local/freeswitch/conf/dialplan/default.xml厦凤,大約265行鼻吮,找到name為L(zhǎng)ocal_Extension的extension,
? 然后在它的前邊新建一個(gè)extension较鼓。強(qiáng)調(diào)一下椎木,必須是前邊。
?
? ? ?
? ? ? ? 說(shuō)明:
? ? 因?yàn)閬?lái)自與rtmp客戶端的聯(lián)系人是單獨(dú)管理的博烂,所以需要單獨(dú)設(shè)置路由香椎。
? ? 只有設(shè)置了這個(gè)路由,其它客戶端才能呼叫rtmp的客戶端禽篱。
? ? ?9畜伐、修改視頻會(huì)議分辨率
修改/usr/local/freeswitch/conf/autoload_configs/conference.conf.xml,大約257行
? ? ?
? 修改為
? ? ?
? ? ? ? 說(shuō)明:
? ? 這么改主要是考慮主機(jī)的負(fù)荷躺率。
五玛界、啟動(dòng)腳本
? ? 為了讓FreeSWITCH在主機(jī)啟動(dòng)時(shí)可以自動(dòng)運(yùn)行,需要?jiǎng)?chuàng)建自啟動(dòng)腳本悼吱。
? ? 1慎框、freeswitch.service文件
? ? ?在目錄/usr/lib/systemd/system下創(chuàng)建文件freeswitch.service,內(nèi)容如下:
? ? ? [Unit]
? ? ? Description=FreeSWITCH
? ? ? After=syslog.target network.target
? ? ? After=postgresql.service postgresql-9.3.service postgresql-9.4.service mysqld.service httpd.service
? ? ? [Service]
? ? ? User=root
? ? ? EnvironmentFile=-/etc/sysconfig/freeswitc
? ? ? WorkingDirectory=/usr/local/freeswitch
? ? ? ExecStart=/usr/local/freeswitch/bin/freeswitch -nc -nf $FREESWITCH_PARAMS?
? ? ? ExecReload=/usr/bin/kill -HUP $MAINPID
? ? ? [Install]
? ? ? ?WantedBy=multi-user.target
? ? 2后添、freeswitch文件
? ? ? 在目錄/etc/sysconfig下創(chuàng)建文件freeswitch笨枯,內(nèi)容如下:
? ? ? ?FREESWITCH_PARAMS=""
? ? 3、修改文件夾屬性
? ? ?cd /usr/local/
? ? ?chown -R root:root freeswitch
? ? ?chmod -R g+w freeswitch
? ? 4、啟動(dòng)
? ? ?systemctl enable freeswitch.service
? ? ?systemctl start freeswitch.service
六馅精、錄制會(huì)議
? ?修改文件/usr/local/freeswitch/conf/autoload_configs/conference.conf.xml
? ?部分严嗜,最后添加兩行
? ? ?
? ? ?
七、安裝nginx
? ?客戶端播放已錄制的會(huì)議視頻洲敢,需要借助nginx來(lái)實(shí)現(xiàn)阻问,安裝nginx命令如下:
? ? ? yum install nginx
? ?啟動(dòng)nginx命令如下:
? ? ? systemctl enable nginx.service
? ? ? systemctl start nginx.service
八、數(shù)字證書(shū)
? ?為了支持在瀏覽器中使用WebRTC沦疾,需要安全的連接称近。這樣需要為FreeSWITCH制作、安裝證書(shū)哮塞。證書(shū)的制作需要借助一個(gè)FreeSWITCH
? ?提供的工具刨秆,下載地址:wget http://files.freeswitch.org/downloads/ssl.ca-0.1.tar.gz
? ?1、制作根證書(shū)
? ? tar zxfv ssl.ca-0.1.tar.gz
? ? cd ssl.ca-0.1/
? ? perl -i -pe 's/md5/sha256/g' *.sh
? ? perl -i -pe 's/1024/4096/g' *.sh
? ? ./new-root-ca.sh
? ?2忆畅、制作服務(wù)器證書(shū)
? ? ?根證書(shū)制作完成后衡未,就可以使用這個(gè)工具來(lái)制作服務(wù)器證書(shū),并用這個(gè)根證書(shū)給服務(wù)器證書(shū)做簽名了家凯。
? ? ?以制作self.bkw.org的證書(shū)為例缓醋。
? ? ?1)生成證書(shū)
? ? ? ./new-server-cert.sh self.bkw.org
? ? ? 根據(jù)提示輸入,其中只有Common Name這一項(xiàng)是必須的绊诲,其它的可以隨便填送粱。
? ? ?2)簽名
? ? ? ./sign-server-cert.sh self.bkw.org
? ? ?完成后,會(huì)生成三個(gè)文件掂之,其中只有self.bkw.org.crt和self.bkw.org.key是有用的抗俄。
? ? ?3)生成pem文件
? ? ? FreeSWITCH需要pem格式的證書(shū),所以需要進(jìn)行格式轉(zhuǎn)換
? ? ? ?cat self.bkw.org.crt self.bkw.org.key > ./wss.pem
? ? ? ?cat self.bkw.org.crt self.bkw.org.key > ./agent.pem
? ? ? ?cat ca.crt > ./cafile.pem
九世舰、為FreeSWITCH安裝證書(shū)
? ? 把wss.pem动雹、agent.pem、cafile.pem三個(gè)文件復(fù)制到文件夾:/usr/local/freeswitch/certs
? ?修改配置文件 /usr/local/freeswitch/conf/sip_profiles/internal.xml跟压,把tls-cert-dir的value設(shè)置為/usr/local/freeswitch/certs胰蝠,如下:
? ? ?
十、為nginx安裝證書(shū)
? ?nginx啟用https震蒋,也需要安裝證書(shū)茸塞。因?yàn)閚ginx和FreeSWITCH在同一臺(tái)主機(jī),所以可以使用FreeSWITCH的證書(shū)喷好。
? ?修改nginx的配置文件/etc/nginx/nginx.conf翔横,找到如下部分读跷,取消前邊的#梗搅,以讓配置生效。其中ssl_certificate和ssl_certificate_key需要指向
? ?FreeSWITCH的數(shù)字證書(shū)。
?# Settings for a TLS enabled server.
server {
? ? ? ? listen? ? ? ?443 ssl http2 default_server;
? ? ? ? listen? ? ? ?[::]:443 ssl http2 default_server;
? ? ? ? server_name? _;
? ? ? ? root? ? ? ? ?/usr/share/nginx/html;
? ? ? ? ssl_certificate? ? ?"/usr/local/freeswitch/certs/wss.pem";
? ? ? ? ssl_certificate_key "/usr/local/freeswitch/certs/wss.pem";
? ? ? ? ssl_session_cache shared:SSL:1m;
? ? ? ? ssl_session_timeout? 10m;
#? ? ? ?ssl_ciphers HIGH:!aNULL:!MD5;
#? ? ? ?ssl_prefer_server_ciphers on;
? ? ? ? # Load configuration files for the default server block.
? ? ? ? include /etc/nginx/default.d/*.conf;
? ? ? ? location / {
? ? ? ? }
? ? ? ? error_page 404 /404.html;
? ? ? ? ? ? location = /40x.html {
? ? ? ? }
? ? ? ? error_page 500 502 503 504 /50x.html;
? ? ? ? ? ? location = /50x.html {
? ? ? ? }
? ? }