nginx代理
當webman需要直接提供外網訪問時,建議在webman前增加一個nginx代理,這樣有以下好處。
- 靜態(tài)資源由nginx處理,讓webman專注業(yè)務邏輯處理
- 讓多個webman共用80、443端口,通過域名區(qū)分不同站點,實現單臺服務器部署多個站點
- 能夠實現php-fpm與webman架構共存
- nginx代理ssl實現https,更加簡單高效
- 能夠嚴格過濾外網一些不合法請求
nginx代理示例
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name 站點域名;
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;
}
}
# 拒絕訪問所有以 .php 結尾的文件
location ~ \.php$ {
return 404;
}
# 允許訪問 .well-known 目錄
location ~ ^/\.well-known/ {
allow all;
}
# 拒絕訪問所有以 . 開頭的文件或目錄
location ~ /\. {
return 404;
}
}
一般來說以上配置開發(fā)者只需要將server_name和root配置成實際值即可,其它字段不需要配置。
注意
特別注意的是,root選項一定要配置成webman下的public目錄,千萬不要直接設置成webman目錄,否則你的所有文件可能會被外網下載訪問,包括數據庫配置等敏感文件。