debian+nginx配置初探--php环境、反向代理和负载均衡

配置nginx的PHP环境

  1. 安装nginx
    sudo apt-get install nginx
    安装nginx就可以通过下面地址来访问了:http://localhost/
  2. 安装php
    sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt
    php5-fpm:与nginx配合方式之一,另外个是:spawn-fcgi。
  3. 配置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
  4. 测试php是否支持
    编辑"/usr/share/nginx/mytest/index.php"
    <?php
    phpinfo();
    ?>
  5. 如果启动nginx遇到失败等情况,可以查看nginx的错误日志,在

    /var/log/nginx/error.log

完全卸载nginx

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

  1. 本来以为直接使用如下apt-get指令
    sudo apt-get --purge remove nginx
    sudo apt-get install nginx
    就可以搞定,但实际上并没有有自动产生nginx的配置文件,连/etc/nginx目录都没产生。
  2. 于是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

  3. 于是
    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!

反向代理或负载

  1. 这涉及到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。
  2. 在虚拟机主机配置中指定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;
            }
    }
  3. 然后就可以通过http://localhost:99/来访问10.9.31.89:5001的服务了。这里只配置了一个后端server,如果配置多个,则实用简单的轮询来达到负载的效果。
原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4621672.html