nginx代理
當(dāng)webman需要直接提供外網(wǎng)訪問(wèn)時(shí),建議在webman前增加一個(gè)nginx代理,這樣有以下好處。
- 靜態(tài)資源由nginx處理,讓webman專注業(yè)務(wù)邏輯處理
- 讓多個(gè)webman共用80、443端口,通過(guò)域名區(qū)分不同站點(diǎn),實(shí)現(xiàn)單臺(tái)服務(wù)器部署多個(gè)站點(diǎn)
- 能夠?qū)崿F(xiàn)php-fpm與webman架構(gòu)共存
- nginx代理ssl實(shí)現(xiàn)https,更加簡(jiǎn)單高效
- 能夠嚴(yán)格過(guò)濾外網(wǎng)一些不合法請(qǐng)求
nginx代理示例
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name 站點(diǎn)域名;
listen 80;
access_log off;
# 注意,這里一定是webman下的public目錄,不能是webman根目錄
root /your/webman/public;
location ^~ / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://webman;
}
}
# 拒絕訪問(wèn)所有以 .php 結(jié)尾的文件
location ~ \.php$ {
return 404;
}
# 允許訪問(wèn) .well-known 目錄
location ~ ^/\.well-known/ {
allow all;
}
# 拒絕訪問(wèn)所有以 . 開(kāi)頭的文件或目錄
location ~ /\. {
return 404;
}
}
一般來(lái)說(shuō)以上配置開(kāi)發(fā)者只需要將server_name和root配置成實(shí)際值即可,其它字段不需要配置。
注意
特別注意的是,root選項(xiàng)一定要配置成webman下的public目錄,千萬(wàn)不要直接設(shè)置成webman目錄,否則你的所有文件可能會(huì)被外網(wǎng)下載訪問(wèn),包括數(shù)據(jù)庫(kù)配置等敏感文件。