Nginx負載均衡, ssl原理,php-fpm,open_basedir

Nginx負載均衡

  • vim /usr/local/nginx/conf/vhost/load.conf // 寫入以下內容
upstream qq_com
{
    ip_hash;
    server 61.135.157.156:80;
    server 125.39.240.113:80;
}
server
{
    listen 80;
    server_name www.qq.com;
    location /
    {
        proxy_pass      http://qq_com;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

upstream來指定多個web serverphp

ip_hash,保證客戶端保持訪問一個ip。也就是一個服務器。html

proxy_pass 後面不能跟ip了,只能跟upstream後面的名字linux

  • 先用qq.com做爲實驗對象。

能夠用dig來查看這個qq.com有幾個ip。就是域名解析。若是dig 沒有能夠裝一下yum install -y bind-utilsnginx

[root@aminglinux-01 ~]# dig qq.com

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7 <<>> qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63880
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;qq.com.				IN	A

;; ANSWER SECTION:
qq.com.			109	IN	A	125.39.240.113
qq.com.			109	IN	A	61.135.157.156

;; Query time: 13 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: 二 10月 24 17:28:56 CST 2017
;; MSG SIZE  rcvd: 67

[root@aminglinux-01 ~]#
  • nginx不支持代理 https

SSL工做流程

  • 瀏覽器發送一個https的請求給服務器;
  • 服務器要有一套數字證書,能夠本身製做(後面的操做就是阿銘本身製做的證書),也能夠向組織申請,區別就是本身頒發的證書須要客戶端驗證經過,才能夠繼續訪問,而使用受信任的公司申請的證書則不會彈出>提示頁面,這套證書其實就是一對公鑰和私鑰;

php-fpm的pool

  • 由於防止一個網站出問題致使pool出問題全部網站都不能用了。因此有必要每一個站點使用單獨的pool。
  • 設置多個pool

vim vim /usr/local/php-fpm/etc/php-fpm.conf//在[global]部分增長web

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024


[aming.com]
listen = /tmp/aming.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

檢查算法

[root@aminglinux-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[25-Oct-2017 19:54:35] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

重啓vim

[root@aminglinux-01 etc]#  /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@aminglinux-01 etc]#

ps aux |grep php-fpm後端

[root@aminglinux-01 etc]# ps aux |grep php-fpm
root       2566  0.1  0.4 227200  4992 ?        Ss   19:55   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    2567  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2568  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2569  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2570  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2571  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2572  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2573  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2574  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2575  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2576  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2577  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2578  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2579  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2580  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2581  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2582  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2583  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2584  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2585  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2586  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2587  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2588  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2589  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2590  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2591  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2592  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2593  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2594  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2595  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2596  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2597  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2598  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2599  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2600  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2601  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2602  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2603  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2604  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2605  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2606  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
root       2613  0.0  0.0 112668   972 pts/0    R+   19:57   0:00 grep --color=auto php-fpm

這樣把pool和網站綁在一塊兒。瀏覽器

[root@aminglinux-01 etc]# cd /usr/local/nginx/conf/vhost/
[root@aminglinux-01 vhost]# ls
aaa.com.conf  load.conf  ssl.conf  test.com.conf
[root@aminglinux-01 vhost]# vi test.com.conf
location ~ \.php$
   {
      include fastcgi_params;
      fastcgi_pass unix:/tmp/aming.sock;      //改這裏
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;     

    }

php-fpm慢執行日誌

  • 編輯vim /usr/local/php-fpm/etc/php-fpm.conf //加入以下內容
request_slowlog_timeout = 1   //超過一秒鐘就要記錄日誌
slowlog = /usr/local/php-fpm/var/log/www-slow.log   //日誌路徑

/usr/local/php-fpm/sbin/php-fpm -t服務器

/etc/init.d/php-fpm reload

  • 模擬執行慢。
  • cd /data/wwwroot/test.com/
  • 建立一個sleep.php

寫入以下內容

<?php 
echo 「test slow log」;
sleep(2);
echo 「done」;
?>
  • curl -x192.168.245.130:80 test.com/sleep.php
  • 查看日誌cat /usr/local/php-fpm/var/log/www-slow.log

open_basedir

  • vim /usr/local/php-fpm/etc/php-fpm.d/aming.conf//加入以下內容
php_admin_value[open_basedir]=/data/wwwroot/aming.com:/tmp/

建立測試php腳本,進行測試 再次更改aming.conf,修改路徑,再次測試 配置錯誤日誌 再次測試 查看錯誤日誌

php-fpm進程管理

  • pm = dynamic //動態進程管理,也能夠是static
  • pm.max_children = 50 //最大子進程數,ps aux能夠查看
  • pm.start_servers = 20 //啓動服務時會啓動的進程數
  • pm.min_spare_servers = 5 //定義在空閒時段,子進程數的最少數量,若是達到這個數值時,php-fpm服務會自動派生新的子進程。
  • pm.max_spare_servers = 35 //定義在空閒時段,子進程數的最大值,若是高於這個數值就開始清理空閒的子進程。
  • pm.max_requests = 500 //定義一個子進程最多處理的請求數,也就是說在一個php-fpm的子進程最多能夠處理這麼多請求,當達到這個數值時,它會自動退出。

擴展學習

相關文章
相關標籤/搜索