欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos7 安装nginx 博客分类: Nginx

程序员文章站 2024-03-12 10:35:08
...

 

先使用yum命令安装gcc,安装pcrezlibopenssl

 

1

2

3

4

yum install -y gcc

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

 

 /usr/local/目录下新建nginx-src目录,将nginx-1.8.0.tar.gz放到此处,解压 

 

1

tar -zxvf nginx-1.8.0.tar.gz

 

进入解压后目录

 
centos7 安装nginx
            
    
    博客分类: Nginx
  

依次执行命令:

 

1

2

3

4

5

./configure

 

make

 

make install

 

 此时nginx安装完毕,安装目录是/usr/local/nginxnginx默认占用80端口

 

注意:开放防火墙的80端口

 
centos7 安装nginx
            
    
    博客分类: Nginx
  

其中,sbin目录为nginx执行命令,conf目录下的nginx.conf为默认加载的配置文件

 

启动nginx

 

1

./sbin/nginx

 

关闭nginx

 

1

./sbin/nginx -s stop

 

 启动nginx后访问192.168.50.133:80即可访问nginx:显示nginx欢迎页

 


centos7 安装nginx
            
    
    博客分类: Nginx
 

 

 至此,nginx安装完毕。

 

 

3.反向代理与负载均衡配置

 

现有两台服务器,一台为192.168.50.137,一台为192.168.50.139,服务器上各有一台tomcat,端口均为8080,在192.168.50.133上有nginx,经过配置nginx,当访问192.168.50.133:80时,即可访问192.168.50.137:8080192.168.50.139:8080中随机一台,此时192.168.50.133:80nginx监听,当有请求时,代理到192.168.50.137:8080192.168.50.139:8080随机一台即可,即为nginx反向代理功能,同时此时可以通过nginx将请求进行转发,保证了一个入口,将所有请求转发到两台服务器上也减轻了任何一台的负载压力,当有大量请求时,可以搭建大量服务器,在入口代理服务器上使用nginx进行转发,即是负载均衡功能。

 

 

 

 配置即是配置nginx安装目录中conf目录下的nginx.conf文件即可:具体配置如下,重点是红色部分

 

复制代码

 

#Nginx所用用户和组

 

#user  niumd niumd;

 

 

 

#工作的子进程数量(通常等于CPU数量或者2倍于CPU

 

worker_processes  2;

 

 

 

#错误日志存放路径

 

#error_log  logs/error.log;

 

#error_log  logs/error.log  notice;

 

error_log  logs/error.log  info;

 

 

 

#指定pid存放文件

 

pid        logs/nginx.pid;

 

 

 

events {

 

    #使用网络IO模型linux建议epollFreeBSD建议采用kqueue

 

    #use epoll;

 

    #允许最大连接数

 

    worker_connections  1024;

 

}

 

 

 

http {

 

    include       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  off;

 

    access_log  logs/access.log;

 

 

 

    client_header_timeout  3m;

 

    client_body_timeout    3m;

 

    send_timeout           3m;

 

    client_header_buffer_size    1k;

 

    large_client_header_buffers  4 4k;

 

    sendfile        on;

 

    tcp_nopush      on;

 

    tcp_nodelay     on;

 

    #fastcgi_intercept_errors on;

 

    error_page 404  /404.html;

 

    #keepalive_timeout  7520;

 

    gzip                 on;

 

    gzip_min_length      1000;

 

    gzip_types           text/plain text/css application/x-javascript;

 

    #配置被代理的服务器

 

    upstream blank {

 

        #ip_hash;

 

        server 192.168.50.137:8080;

 

        server 192.168.50.139:8080;

 

    }

 

    server {

 

            #nginx监听80端口,请求该端口时转发到真实目标

 

            listen       80;

 

            #配置访问域名

 

            server_name  localhost;                  

 

            location / {

 

                #这里配置代理是指上面定义的两个被代理目标,blank名字必须一致

 

                proxy_pass http://blank;

 

                #proxy_redirect          off;

 

                #如果是非80端口,配置为Host $host:端口号,目的是将代理服务器收到的用户的信息传到真实服务器上

 

                proxy_set_header        Host $host;

 

                proxy_set_header        X-Real-IP $remote_addr;

 

                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

 

                client_max_body_size    10m;

 

                client_body_buffer_size 128k;

 

                proxy_connect_timeout   300;

 

                proxy_send_timeout      300;

 

                proxy_read_timeout      300;

 

                proxy_buffer_size       4k;

 

                proxy_buffers           4 32k;

 

                proxy_busy_buffers_size 64k;

 

                proxy_temp_file_write_size 64k;

 

                add_header Access-Control-Allow-Origin *;

 

            }

 

           

 

            #此处定义500 502503 504的错误页面

 

            error_page   500502503504  /50x.html;

 

            #错误页面位置

 

            location = /50x.html {

 

            #root表示路径 htmlnginx安装目录中的html文件夹

 

            #位于/usr/local/nginx/html/

 

               root   html;

 

            }       

 

    }

 

}

 

 

启动两台tomcat,重新启动nginx

 

访问192.168.50.133:80将会随机访问192.168.50.137:8080192.168.50.139:8080其中一台。(问题:每次刷新nginx服务器地址sessionid会变,session不能共享。

 


centos7 安装nginx
            
    
    博客分类: Nginx
 

 

 

 

 

 

nginx轮询策略:

 

nginx负载均衡到多台服务器上时,默认采用轮询策略:

 

常见策略:

 

1、轮询

 

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

 

2weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,数字越大命中率越高。
例如:轮询几率是2:1
upstream bakend {
server 192.168.0.14 weight=2;
server 192.168.0.15 weight=1;
}

 

2ip_hash
每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

 

其他策略可以自行查询学习,nginx还有很多其他可配置项,静态资源缓存,重定向等,想深入的童鞋请自行学习

 

nginx配置详解:http://blog.csdn.net/tjcyjd/article/details/50695922

 

 

 

实际问题:虽然解决了,但是不是很理解,记录一下

 

其中192.168.50.133:80是有外网映射的,外网55.125.55.55:5555映射到192.168.50.133:80上,此时使用55.125.55.55:5555访问,会映射到192.168.50.133:80上,然后会被转发到192.168.50.137:8080192.168.50.139:8080,但是此时却出现图片,jscss等静态文件无法访问的情况,通过两种方法解决。

 

<1>.映射非80端口

 

55.125.55.55:5555映射192.168.50.133的非80端口,例如55.125.55.55:5555映射192.168.50.133:5555,然后再在nginx配置文件中配置如下,注意红色加大部分:这地方不理解

 

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

........ upstream blank {

        #ip_hash;

        server 192.168.50.137:8080;

        server 192.168.50.139:8080;

    }

 

    server {

        #nginx监听5555端口,请求该端口时转发到真实目标

            listen       5555;

        #配置访问域名

            server_name  192.168.11.133;              

         

            location / {

        #这里配置代理是指上面定义的两个被代理目标,blank名字必须一致

                proxy_pass http://blank;

                 

        #proxy_redirect          off;

        #80端口使用,目的是将代理服务器收到的用户的信息传到真实服务器上

        proxy_set_header        Host $host:$server_port;

        proxy_set_header        X-Real-IP $remote_addr;

         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size    10m;

        client_body_buffer_size 128k;

        proxy_connect_timeout   300;

        proxy_send_timeout      300;

        proxy_read_timeout      300;

        proxy_buffer_size       4k;

        proxy_buffers           4 32k;

        proxy_busy_buffers_size 64k;

        proxy_temp_file_write_size 64k;

        add_header Access-Control-Allow-Origin *;

            }........

 

 此时访问55.125.55.55:5555,映射到192.168.50.133:5555上,然后转发到192.168.50.137:8080192.168.50.139:8080上,此时静态文件均能访问。

 

 

 

 <2>.使用域名在外网服务器上使用nginx进行转发

 

55.125.55.55绑定域名为test.baidubaidu.com,此时在55.125.55.55服务器上使用nginx,

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

........location / {

        #加入判断,如果域名为test.baidubaidu.com,转发到192.168.50.133:80,然后再进行转发,注意,此处未进行测试,貌似是这么写的,$hostnginx变量,可以获取域名    

        if($host = "test.baidubaidu.com" ){

          proxy_pass http://192.168.50.133:80;

        }

                 

        #proxy_redirect          off;

        #80端口使用,目的是将代理服务器收到的用户的信息传到真实服务器上,我也不是很理解

        proxy_set_header        Host $host:$server_port;

        proxy_set_header        X-Real-IP $remote_addr;

        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size    10m;

        client_body_buffer_size 128k;

        proxy_connect_timeout   300;

        proxy_send_timeout      300;

        proxy_read_timeout      300;

        proxy_buffer_size       4k;

        proxy_buffers           4 32k;

        proxy_busy_buffers_size 64k;

        proxy_temp_file_write_size 64k;

        add_header Access-Control-Allow-Origin *;

            }........

 

 以上即nginx反向代理与负载均衡介绍,经过此次学习,发现nginx确实是博大精深

 

  • centos7 安装nginx
            
    
    博客分类: Nginx
  • 大小: 18.6 KB
  • centos7 安装nginx
            
    
    博客分类: Nginx
  • 大小: 24.7 KB
  • centos7 安装nginx
            
    
    博客分类: Nginx
  • 大小: 18.7 KB
  • centos7 安装nginx
            
    
    博客分类: Nginx
  • 大小: 23.9 KB