在CentOS 7上部署FreeSWITCH的過(guò)程

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 {

? ? ? ? }

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末无切,一起剝皮案震驚了整個(gè)濱河市荡短,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哆键,老刑警劉巖掘托,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異籍嘹,居然都是意外死亡闪盔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)辱士,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泪掀,“玉大人,你說(shuō)我怎么就攤上這事颂碘∫旌眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵头岔,是天一觀的道長(zhǎng)塔拳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)峡竣,這世上最難降的妖魔是什么靠抑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮适掰,結(jié)果婚禮上孕荠,老公的妹妹穿的比我還像新娘。我一直安慰自己攻谁,他們只是感情好稚伍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著戚宦,像睡著了一般个曙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上受楼,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天垦搬,我揣著相機(jī)與錄音,去河邊找鬼艳汽。 笑死猴贰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的河狐。 我是一名探鬼主播米绕,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瑟捣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了栅干?” 一聲冷哼從身側(cè)響起迈套,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碱鳞,沒(méi)想到半個(gè)月后桑李,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窿给,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年贵白,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崩泡。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戒洼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出允华,到底是詐尸還是另有隱情圈浇,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布靴寂,位于F島的核電站磷蜀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏百炬。R本人自食惡果不足惜褐隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剖踊。 院中可真熱鬧庶弃,春花似錦、人聲如沸德澈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梆造。三九已至缴守,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镇辉,已是汗流浹背屡穗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忽肛,地道東北人村砂。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屹逛,于是被迫代替她去往敵國(guó)和親础废。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汛骂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容