Nginx架构-LNMP

  • php-fpm以单独的一个服务存在
  • Nginx直接处理静态文件
  • Nginx会把php的请求通过代理的方式交给php-fpm

Nginx架构-LNMP、Nginx+tomcat、Nginx+keepalived

配置Nginx和php

配置如下(在server部分添加):
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

配置说明:
1 fastcgi_params文件在/usr/local/nginx/conf/下面,其内容为fastcgi相关的变量
2 fastcgi_pass后面跟的是php-fpm服务监听地址,可以是IP:PORT,也可以是unix socket地址,也支持upstream的地址
3 fastcgi_index定义索引页,如果在server内其他部分有定义index参数,该配置可以忽略
4 fastcgi_param这行其实可以在fastcgi_params文件里面定义SCRIPT_FILENAME变量,这个变量如果不定义,php的请求是没办法访问的。

Nginx+tomcat

Tomcat本身就是一个web服务器,可以处理静态文件的请求,但处理能力没有Nginx强,所以需要做一个动静分离
在本架构中,Nginx直接代理Tomcat
Tomcat安装略
配置文件示例
https://coding.net/u/aminglinux/p/nginx/git/blob/master/java/nginx_tomcat.md

Nginx架构-LNMP、Nginx+tomcat、Nginx+keepalived

配置文件示例
server
{
    listen 80;
    server_name www.aminglinux.com;

    location ~* "\.(jpg|png|jepg|js|css|xml|bmp|swf|gif|html)$"
    {
        root /data/wwwroot/aminglinux/;
        access_log off;
        expire 7d;
    }

    location /
    {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

说明:
1 首先,把各种静态文件的请求分离出来,单独由nginx处理。
2 其他请求直接代理8080端口,即tomcat服务。

Nginx+keepalived

  • 用户访问的是一个vip(虚拟IP),两台Nginx通过Keepalived实现高可用
  • 正常情况下,Nginx主提供服务,Nginx备并不提供服务,留作备用,当主down掉后,Nginx备会替代主提供服务
  • Nginx主和备都要配置负载均衡,代理后端的所有Server
  • 在此架构中,Nginx和Keepalived安装在同一个机器上,也就是说Nginx主和Nginx备都需要安装Keepalived服务
    Nginx架构-LNMP、Nginx+tomcat、Nginx+keepalived