1. 程式人生 > >Nginx架構-LNMP、Nginx+tomcat、Nginx+keepalived

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

用戶訪問 技術 gin Coding www bmp 高可用 proxy 其他

Nginx架構-LNMP
  • php-fpm以單獨的一個服務存在
  • Nginx直接處理靜態文件
  • Nginx會把php的請求通過代理的方式交給php-fpm

技術分享圖片

配置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

技術分享圖片

配置文件示例
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