由于 Swoole Server 对 HTTP 协议的支持并不完整,建议仅将 SW-X 作为后端服务,并且在前端增加 NGINX 或 APACHE 作为代理,参照下面的例子添加转发规则
server {
root 绑定个目录,但不建议指定到server的目录,这样不安全;
server_name 你的域名;
# 解决静态文化访问问题
# 注意:2.0.7版本后支持在框架配置文件中直接设置静态文件访问目录
location /public/ {
root 你的静态根地址,不能带public;
}
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:9502;
}
}
}
代理之后,可通过$this->header()
中的x-real-ip
获取客户端真实ip
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] fcgi下无效
RewriteRule ^(.*)$ http://127.0.0.1:9502/$1 [QSA,P,L]
#请开启 proxy_mod proxy_http_mod request_mod
</IfModule>