想要獲得更多的文章,可以關注我的微信ilanniweb。
昨天介紹了haproxy的手機比對規則,今天再來介紹下haproxy與nginx、zabbix的內建。接下來我會詳細介紹haproxy與nginx目錄浏覽功能的內建,與zabbix內建我會把haproxy配置貼出來。
由于業務需求,現在要把伺服器上的部分目錄暴露出去,讓其它系統來調用暴露出去的檔案,但是現在要求對外提供的還是80端口的http服務。
分析:
要達到上述的要求,首先我們要提供目錄浏覽的功能,這個我們可以使用apache或者nginx的目錄浏覽功能。在此,我們使用的是nginx的目錄浏覽功能(即nginx的目錄索引功能)。
然後讓haproxy反向代理到nginx,就可以實作業務的需求。
nginx的安裝在此就不列出了,下面我們直接看nginx的配置檔案。如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 8088;
server_name 127.0.0.1;
charset utf-8;
access_log /var/log/nginx/log/host.access.log main;
location /testnginx/ {
root /data/;
autoindex on;
<a href="http://s3.51cto.com/wyfs02/M02/75/99/wKioL1Y9z1CA3JGNAAKqlaD5P58218.jpg" target="_blank"></a>
nginx現在我們定義的是監聽8088這個端口,而且對外開放的是/data下的是testnginx這個目錄。
注意:這個對外的目錄名稱一定要記住,這個名稱我們在haproxy比對規則中會使用到。
nginx配置完畢後,我們選擇來檢視下起目錄浏覽功能。如下:
http://http.ilanni.com:8088/testnginx/
<a href="http://s3.51cto.com/wyfs02/M00/75/99/wKioL1Y9z1Gj8YSOAAIXiyKMuNE750.jpg" target="_blank"></a>
通過上圖,我們可以很明顯的看出nginx的目錄浏覽已經完全沒有問題。
nginx配置完畢後,我們現在來配置haproxy。haproxy的配置就很簡單了。
隻需要根據用戶端請求的url中比對目錄的名稱即可。具體配置檔案如下:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 188
gid 188
daemon
tune.ssl.default-dh-param 2048
defaults
log global
mode http
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.1
option redispatch
retries 3
maxconn 2000
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen admin_stats
bind 0.0.0.0:1080
maxconn 10
stats refresh 30s
stats uri /stats
stats auth admin:admin
stats hide-version
frontend weblb
bind *:80
acl is_nginx url_beg /testnginx
acl is_http hdr_beg(host) http.ilanni.com
use_backend nginxserver if is_nginx is_http
use_backend httpserver if is_http
backend httpserver
balance source
server web1 127.0.0.1:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
backend nginxserver
server web1 127.0.0.1:8088 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
<a href="http://s3.51cto.com/wyfs02/M02/75/9B/wKiom1Y9zw-CvI7WAANOUF3fLMw675.jpg" target="_blank"></a>
在haproxy配置檔案中,我們定義了一個is_nginx規則,該規則比對的是以testnginx目錄開始的url,然後把該規則轉發到後端的nginxserver伺服器組,而nginxserver伺服器組就是nginx伺服器。
這樣就完成了nginx與haproxy內建。
注意:在這有一點一定要注意啦,haproxy比對目錄的時候,後端的伺服器組一定要存在該目錄,否則會報404錯誤的。這個是我踩過很多坑後才知道的。
nginx與haproxy內建配置完畢後,我們選擇來通路http://http.ilanni.com/testnginx/測試其功能,如下:
<a href="http://s3.51cto.com/wyfs02/M02/75/99/wKioL1Y9z1OQnhyIAAHqvVFoYM0478.jpg" target="_blank"></a>
通過上圖,我們可以很明顯的看出haproxy已經完美的和nginx目錄浏覽功能內建了。
前幾章節我們講解了haproxy與nginx進行內建的功能,在這一章節,我們再來介紹下haproxy與zabbix內建的功能。
zabbix在此我們是使用的yum方式進行安裝的,安裝完畢後apache監聽的是8099端口。通路形式如下:
http://zabbix.ilanni.com:8099/zabbix/
<a href="http://s3.51cto.com/wyfs02/M00/75/99/wKioL1Y9z1ST2M_BAAJX2tV9-uc171.jpg" target="_blank"></a>
現在要求直接使用80端口通路zabbix,haproxy具體配置如下:
acl is_lianzhou hdr_beg(host) zabbix.ilanni.com
acl is_zabbix url_beg /zabbix
use_backend zabbix if is_zabbix
backend zabbix
server web1 192.168.1.22:8099 maxconn 1024 weight 1 check inter 2000 rise 2 fall 3
haproxy配置很簡單,隻需要定義一個is_zabbix的url比對規則,然後分發到後端的伺服器組即可。
還是需要注意的,比對的目錄在後端伺服器是存在的。
配置完畢後,通路如下:
http://zabbix.ilanni.com/zabbix/
<a href="http://s3.51cto.com/wyfs02/M01/75/99/wKioL1Y9z1WSPx3FAAJDxtxkH_U713.jpg" target="_blank"></a>
通過上圖,我們可以很明顯的看出haproxy與zabbix已經完美內建。
本文轉自 爛泥行天下 51CTO部落格,原文連結:http://blog.51cto.com/ilanni/1710621