debian+nginx+php环境实现反向代理和负载均衡教程

作者:袖梨 2022-06-30

配置nginx的PHP环境

安装nginx

sudo apt-get install nginx

安装nginx就可以通过下面地址来访问了:http://loc*al*ho*st/

安装php

sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt

php5-fpm:与nginx配合方式之一,另外个是:spawn-fcgi。

配置nginx的虚拟主机

在/etc/nginx/sites-available/default中添加

server{
listen 90;
index index.php;
root /usr/share/nginx/mytest/
access_log /usr/share/nginx/mytest/acc.log combined;
location ~ .php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

其中“/var/run/php5-fpm.sock”是“/etc/php5/fpm/pool.d/www.conf”的listen,记得重启nginx

sudo /etc/init.d/nginx restart

测试php是否支持

编辑"/usr/share/nginx/mytest/index.php"

phpinfo();
?>

如果启动nginx遇到失败等情况,可以查看nginx的错误日志,在

/var/log/nginx/error.log

完全卸载nginx

在配置nginx做实验时配置错了,导致访问不了虚拟主机。一狠心把nginx的配置文件目录(/etc/nginx)都删除了,而且我没有备份这些配置文件,因此想重装nginx。

本来以为直接使用如下apt-get指令

sudo apt-get --purge remove nginx
sudo apt-get install nginx

就可以搞定,但实际上并没有有自动产生nginx的配置文件,连/etc/nginx目录都没产生。
于是autoremove

sudo apt-get --purge remove nginx
sudo apt-get autoremove
sudo apt-get install nginx

提示

awk: cannot open /etc/nginx/nginx.conf (No such file or directory)

虽然产生了/etc/nginx目录了,但只有部分配置文件

conf.d sites-available sites-enabled

于是

sudo apt-get --purge remove nginx
sudo apt-get autoremove

dpkg --get-selections|grep nginx

罗列除与nginx相关的软件,

nginx-common deinstall

然后sdfsd

sudo apt-get --purge remove nginx-common
sudo apt-get install nginx

然后OK!


反向代理或负载

这涉及到upstream指令,在“/etc/nginx/sites-available/default”设置一组proxy_pass

upstream first_proxy{
server 10.9.31.89:5001 weight=4 max_fails=2 fail_timeout=30s;
}

server指令用于制定后端服务器的名称和参数,服务器的名称可以是域名、IP地址、端口号或UNIX Socket。
在虚拟机主机配置中指定proxy_pass

server{
listen 99;
location / {
#如果后端服务器返回502、504执行超时都错误则转发到upstream负载均衡池中的另一台服务,实现故障转移。
#proxy_next_upstream http_502 http_504 error timeout invalid_header
proxy_pass http://first_***proxy;
proxy_set_header Host www.yourdomain.com;
proxy_set_header X-Forwarded-For $remote_addr;
}
}

然后就可以通过http://localhos**t*:99/来访问10.9.31.89:5001的服务了。这里只配置了一个后端server,如果配置多个,则实用简单的轮询来达到负载的效果。

相关文章

精彩推荐