Nginx——Linux上搭建Nginx并完成负载均衡的小demo

在服务器上搭建了一个Nginx,做个笔记。

没有相关包的可以在官网下载Nginx:http://nginx.org/en/download.html

具体下载那一版,看自己的需求。我下载的稳定版。

接下来,连接到自己的服务器。我这里是阿里云的服务器,所以用x-shell远程连接。

以此键入一下命令,安装相关依赖包。


yum install -y wget  
yum install -y vim-enhanced  
yum install -y make cmake gcc gcc-c++  

yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

操作结果如下:

其他命令的图就不放了,依次执行就好了。

接下来就是将下载到的Nginx包上传到服务器上面。具体怎么上传就不说了。可以参考这边文章:Linux——x-shell上传文件到Linux和下载文件到本地

要是不确定自己有没有这个工具,那就用下面这句命令验证一下:

#rpm -qa |grep lrzsz

如果有了,那就是下面这样。

欧克,上传了之后就对其进行解压缩。

# tar -zxvf nginx-1.10.2.tar.gz

如下 

接下来进行configure配置


[root@xiniu nginx]# cd nginx-1.16.0
[root@xiniu nginx-1.16.0]# ./configure --prefix=/usr/local/nginx

如下,打印的信息比较多,我就不全贴出来了。

配置完之后,我们就来编译安装。

​​​​​​​执行
# make && make install

现在检查nginx是否已经正常启动,在nginx/sbin/nginx目录下,键入 ps -ef | grep nginx,看到如下信息说明正常启动

[root@iz2ze95j380ruhueghgl6gz nginx-1.16.0]# /usr/local/nginx/sbin/nginx
[root@iz2ze95j380ruhueghgl6gz nginx-1.16.0]# ps -ef | grep nginx
root      1345     1  0 17:48 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    1346  1345  0 17:48 ?        00:00:00 nginx: worker process
root      1348 31084  0 17:48 pts/0    00:00:00 grep --color=auto nginx

欧克。现在基本上就已经完成了Nginx的搭建,我们用服务器IP+端口来测试一下(默认的80端口)来测试一下。

ok,配置成功。

不过这都只是一些基础配置,如果想要去更改Nginx的配置,在nginx目录下进入conf目录,该目录下有个nginx.conf文件,这是nginx最重要的配置文件。

配置文件如下:

#user  nobody;  

#开启进程数 <=CPU数   
worker_processes  1;  

#错误日志保存位置  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
#error_log  logs/error.log  info;  

#进程号保存文件  
#pid        logs/nginx.pid;  

#每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024  
events {  
    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  logs/access.log  main;  

    #打开发送文件  
    sendfile        on;  
    #tcp_nopush     on;  

    #keepalive_timeout  0;  
    #连接超时时间  
    keepalive_timeout  65;  

    #打开gzip压缩  
    #gzip  on;  

    server {  
        #监听端口,默认是80端口  
        listen       80;  
        #监听域名  
        server_name  localhost;  

        #charset koi8-r;  

        #nginx访问日志放在logs/host.access.log下,并且使用main格式(还可以自定义格式)  
        #access_log  logs/host.access.log  main;  

        #如果没有location更明确的匹配访问路径的话,访问请求都会被该location处理。  
        location / {  
            #root指定nginx的根目录为/usr/local/nginx/html  
            root   html;  
            #默认访问文件,欢迎页先去html目录下找index.html,如果找不到再去找index.htm  
            index  index.html index.htm;  
        }  

        #error_page  404              /404.html;  
        # redirect server error pages to the static page /50x.html  
        #  

        #错误页面及其返回地址,错误码为500、502、503、504都会返回50.html错误页面。  
        error_page   500 502 503 504  /50x.html;  
        #location后面是"="的话,说明是精确匹配  
        location = /50x.html {  
            root   html;  
        }  

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
        #  
        #location ~ \.php$ {  
        #    proxy_pass   http://127.0.0.1;  
        #}  

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
        #  
        #location ~ \.php$ {  
        #    root           html;  
        #    fastcgi_pass   127.0.0.1:9000;  
        #    fastcgi_index  index.php;  
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
        #    include        fastcgi_params;  
        #}  

        # deny access to .htaccess files, if Apache's document root  
        # concurs with nginx's one  
        #  
        #location ~ /\.ht {  
        #    deny  all;  
        #}  
    }  


    # another virtual host using mix of IP-, name-, and port-based configuration  
    #  
    #server {  
    #    listen       8000;  
    #    listen       somename:8080;  
    #    server_name  somename  alias  another.alias;  

    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  


    # HTTPS server  
    #  
    #server {  
    #    listen       443 ssl;  
    #    server_name  localhost;  

    #    ssl_certificate      cert.pem;  
    #    ssl_certificate_key  cert.key;  

    #    ssl_session_cache    shared:SSL:1m;  
    #    ssl_session_timeout  5m;  

    #    ssl_ciphers  HIGH:!aNULL:!MD5;  
    #    ssl_prefer_server_ciphers  on;  

    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  

}  

至于如何使用Nginx去映射别的地址,我这里引用一位博主的例子。

测试配置 :当访问www.test.com:7080,实际访问127.0.0.1:8090


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server_names_hash_bucket_size 128;

    client_max_body_size 8m;

    client_header_buffer_size 32k;

    large_client_header_buffers 4 64k;

    #sendfile        on;

    tcp_nopush on;
    tcp_nodelay on;


   # keepalive_timeout 60;

    client_header_timeout 10;

    client_body_timeout 10;

    send_timeout 10;


    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;


    gzip on; 
    gzip_min_length 1k; 

    gzip_buffers 4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

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

    gzip_vary on;

    #gzip  on;

    upstream test{
            server 127.0.0.1:8080;
       }

    #访问:www.test.com:7080
    server {
        listen       7080;
        server_name  www.test.com;


    #映射:127.0.0.1:8090
        location / {
            proxy_pass http://test;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }




    }






}

而负载配置如下(这里对IP进行hash,从而分发到不同的服务器):

upstream oms_server {
        ip_hash;
        server 172.16.x.x;
        server 172.16.x.x;
        server 172.16.x.x;
        }

    server {
        listen       80;
        server_name  www.xxx.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass  http://oms_server;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_max_temp_file_size 0;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值