我是靠谱客的博主 每日一库,最近开发中收集的这篇文章主要介绍nginx 单机实现多网站,负载均衡,upstream,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

nginx 是一款基于epoll机制的web服务

注意安装nginx的时候需要安装一个pcre-devel,这个模块主要是

讲下nginx的基本使用:

nginx -t 测试nginx的安装与配置是否正确,相当于是一个语法的检查

nginx -s reload 就是一个重新加载配置的操作

nginx配置文件是分块实现配置的


我们可以通过配置nginx.conf来实现我们单台主机上跑三个网页:


worker_process 1; worker进程的数量

events {

work_connection 1024;

}

http {

    include       mime.types; #媒体资源库

    default_type  application/octet-stream;

    sendfile        on;#开启高校传输

    keepalive_timeout  65;#链接超时 连接着不干事了就断开

    server {   #网站设置

        listen       80;

        server_name  www.blog.com; #服务域名主机名

        location / {

            root   html/blog;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

        location ~ *.(gif|jpg|png|bmp){

proxy_pass  http://static_pools;

include proxy.conf;

}

    }

  server {   #网站设置

        listen       80;

        server_name  www.bbs.com; #服务域名主机名

        location / {

            root   html/bbs;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

        }

        if ($http_host ~* "^etiantian.org$"){

rewrite ^/(.*) http://bbs.etiantian.org/$1 permant;

#解释下(.*) 就是匹配到的$host,将匹配到的永久的跳转到http://bbs.etiantian.org/$1  $1是正则匹配到的东西,就是从^直到/,然后后面的内容就是匹配的内容$1

}


        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

    }


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

proxy.conf

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_connection_timeout 60;

实现了单主机跑两个网络服务

www.bbs.com

www.blog.com

同时你需要在你的windows机器上配置好你的dns解析

检查连接是否正常


curl -I -s www.baidu.com|head -1|tr " " "\n")

返回的是数组

#[root@localhost ~]# curl -I -s  www.baidu.com|head -1|tr " " "\n"HTTP/1.1

#200

#OK

. /etc/init.d/functions

function checkurl(){

checkUrl=$1##注意千万别在括号两端加空格

judge=($(curl -I -s www.baidu.com|head -1|tr " " "\n"))

if [[ "${{judge[1]}}" == '200' && ${{judge[2]}} == 'ok' ]]

then

action "$checkurl" /bin/true

else

action "$checkurl" /bin/false

fi

}

checkurl www.baidu.com


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

同时我们可以使用include的方式使得nginx.conf文件看上去更加简洁

注extra在conf下


http{

include mime.types;

include extra/www.conf;

include extra/bbs.conf

}

1

2

3

4

5

www.conf


 server {   #网站设置

        listen       80;

        server_name  www.blog.com; #服务域名主机名

        location / {

            root   html/blog;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

1

2

3

4

5

6

7

8

9

10

11

12

nginx -c /application/nginx/conf/nginx.conf

虚拟主机别名:www.blog.com blog.com都到同一个网站

有点类似rewrite 就是访问


 server {   #网站设置

        listen       80;

        server_name  www.blog.com

blog.com; #服务域名主机名

        location / {

            root   html/blog;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

1

2

3

4

5

6

7

8

9

10

11

12

13

ngx_http_stub_status_module 是记录nginx状态的模块


server {

listen       80;

        server_name  www.blog.com

blog.com; #服务域名主机名

        location / {

            root   html/blog;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

            stub_status on;

            access-log off;

        }

}

1

2

3

4

5

6

7

8

9

10

11

错误日志:


error_log logs/error.log **error**; error是记录错误日志的等级

1

nginx负载均衡:


worker_process 1; worker进程的数量

events {

work_connection 1024;

}

http {

    include       mime.types; #媒体资源库

    default_type  application/octet-stream;

    sendfile        on;#开启高校传输

    keepalive_timeout  65;#链接超时 连接着不干事了就断开

    upstream www_pools {

server 10.0.0.7:80 weight=1;

server 10.0.0.8:80 weight=1;

}

    server {   #网站设置

        listen       80;

        server_name  https://www.bbs.com; #服务域名主机名

        location / {

            root   html;#站点目录用户要的文件信息

            index  index.html index.htm;#首页文件默认

            proxy_pass http://www_pools#就是访问https://www.bbs.com分配给7或者8主机,实现负载均衡weight是权重

        }


    }

    }


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

nginx 日志分割:


DateFormt=date +%Y%m%d  -d -1day

BaseDir=/application/nginx

NginxDir="$BaseDir/logs"

Logname="access_www"

[ -d $NginxDir ] && cd NginxDir  ||exit 1

[ -f ${Logname}.log ]  ||exit 1

/bin/mv $ ${Logname}.log ${DateFormt}_${Logname}.log

crontab -e

0 0 * * *  /bin/bash seperate.sh

1

2

3

4

5

6

7

8

9

server {

listen 80;

server_name http://www.bbs.com

location /imges {

return 500;

}

}


rewrite 语法:

rewrite regx replacement [flag]

#permanent 永久跳转

rewrite ^/(.*) http://www.baodu.com/$1 permanent;


server {

listen 80;

server_name http://www.bbs.com

location / {

root html;

index index.html,index.htm;

}

if ( $http_host ~* "^(.*)\.etiantian\.org$" ){

set $domain $1;

rewrite ^(.*) http://www.etiantian.org/$domain/oldsix.html break

}

}

1

2

3

4

5

6

7

8

9

10

11

12

upstream 模块 ip_hash 就是保存之前的访问不会负载均衡了,访问的谁,以后访问还是那台机器

http{

server_name www.baixx.com;


upstream pools {

ip_hash;

server 10.0.0.7:80;

server 10.0.0.8:80;

}


location / {

root html;

proxy_pass http://pools;

proxy_set_header Host $host; #在http请求头中加入host字段信息,用于后端配置了多台服务器负载均衡的时候,知道是到的那一台

proxy_set_header X-forward-For $remote_addr;#解决日志总是记录反向代理机器的ip,现在记录的就是那台访问的而不是反向代理那台

}


}


最后

以上就是每日一库为你收集整理的nginx 单机实现多网站,负载均衡,upstream的全部内容,希望文章能够帮你解决nginx 单机实现多网站,负载均衡,upstream所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(157)

评论列表共有 0 条评论

立即
投稿
返回
顶部