Nginx负载均衡等环境组件的安装及配置

目录

安装与配置nginx负载均衡

快速实践Nginx负载均衡环境准备

2)安装Nginx软件

安装与配置nginx负载均衡

一、Nginx安装 

1、下载并解压安装包

2、配置编译选项

3、编译和安装

4、编写Nginx启动脚本并加入系统服务和开机启动

5、更改Nginx配置文件

6、测试是否正确解析PHP

Nginx默认虚拟主机

1、修改主配置文件

2、创建vhost目录及配置文件

三、用户认证

1、创建一个新的虚拟主机

2、验证

四、域名重定向

Nginx的域名重定向与httpd类似。

重新定向测试成功


安装与配置nginx负载均衡

Nginx负载均衡等环境组件的安装及配置

快速实践Nginx负载均衡环境准备

Nginx负载均衡等环境组件的安装及配置

2)安装Nginx软件

安装依赖软件包命令部分

yum unstall openssl-devel pcre pcre-devel -y

rpm -qa openssl-devel pcre pcre-devel

安装与配置nginx负载均衡

一、Nginx安装 

1、下载并解压安装包

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz

[[email protected] src]# tar zxf nginx-1.12.2.tar.gz

2、配置编译选项

[[email protected] src]# cd nginx-1.12.2

[[email protected] nginx-1.12.2]# ./configure --prefix=/usr/local/nginx

3、编译和安装

[[email protected] nginx-1.12.2]# make

[[email protected] nginx-1.12.2]# make install

4、编写Nginx启动脚本并加入系统服务和开机启动

[[email protected] nginx-1.12.2]# vim /etc/init.d/nginx     //加入以下内容

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"

start()

{

    echo -n $"Starting $prog: "

    mkdir -p /dev/shm/nginx_temp

    daemon $NGINX_SBIN -c $NGINX_CONF

    RETVAL=$?

    echo

    return $RETVAL

}

stop()

{

    echo -n $"Stopping $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -TERM

    rm -rf /dev/shm/nginx_temp

    RETVAL=$?

    echo

    return $RETVAL

}

reload()

{

    echo -n $"Reloading $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -HUP

    RETVAL=$?

    echo

    return $RETVAL

}

restart()

{

    stop

    start

}

configtest()

{

    $NGINX_SBIN -c $NGINX_CONF -t

    return 0

 

}

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  reload)

        reload

        ;;

  restart)

        restart

        ;;

  configtest)

        configtest

        ;;

  *)

        echo $"Usage: $0 {start|stop|reload|restart|configtest}"

        RETVAL=1

esac

exit $RETVAL

[[email protected] nginx-1.12.2]# chmod 755 /etc/init.d/nginx

[[email protected] nginx-1.12.2]# chkconfig --add nginx                    //加入系统服务

[[email protected] nginx-1.12.2]# chkconfig nginx on                        //开机启动

5、更改Nginx配置文件

[[email protected] nginx-1.12.2]# > /usr/local/nginx/conf/nginx.conf        //重定向符号>,单独使用时,可以吧一个文本文档快速清空

[[email protected] nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf    //写入以下内容

user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

    use epoll;

    worker_connections 6000;

}

http

{

    include mime.types;

    default_type application/octet-stream;

    server_names_hash_bucket_size 3526;

    server_names_hash_max_size 4096;

    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

    ' $host "$request_uri" $status'

    ' "$http_referer" "$http_user_agent"';

    sendfile on;

    tcp_nopush on;

    keepalive_timeout 30;

    client_header_timeout 3m;

    client_body_timeout 3m;

    send_timeout 3m;

    connection_pool_size 256;

    client_header_buffer_size 1k;

    large_client_header_buffers 8 4k;

    request_pool_size 4k;

    output_buffers 4 32k;

    postpone_output 1460;

    client_max_body_size 10m;

    client_body_buffer_size 256k;

    client_body_temp_path /usr/local/nginx/client_body_temp;

    proxy_temp_path /usr/local/nginx/proxy_temp;

    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

    fastcgi_intercept_errors on;

    tcp_nodelay on;

    gzip on;

    gzip_min_length 1k;

    gzip_buffers 4 8k;

    gzip_comp_level 5;

    gzip_http_version 1.1;

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

    application/xml;

    server

    {

        listen 80;

        server_name localhost;

        index index.html index.htm index.php;

        root /usr/local/nginx/html;

        location ~ \.php$

        {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

        }   

    }

}

[[email protected] nginx-1.12.2]# service nginx start   //启动nginx

[[email protected] nginx-1.12.2]# ps aux |grep nginx

root      14119  0.0  0.0  20500   628 ?        Ss   14:54   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

nobody    14120  0.0  0.1  22944  3212 ?        S    14:54   0:00 nginx: worker process

nobody    14121  0.0  0.1  22944  3212 ?        S    14:54   0:00 nginx: worker process

root      14123  0.0  0.0 112680   968 pts/0    R+   14:54   0:00 grep --color=auto nginx

6、测试是否正确解析PHP

[[email protected] ~]# vim /usr/local/nginx/html/test.php   //写入以下内容

<?php

echo "This is a test php page!";

?>

[[email protected] ~]# curl localhost/test.php

This is a test php page![[email protected] ~]#       //出现这个说明解析正常

Nginx默认虚拟主机

在Nginx中也有默认虚拟主机,跟httpd类似,第一个被Nginx加载的虚拟主机就是默认主机,但和httpd不相同的地方是,它还有一个配置用来标记默认虚拟主机,也就是说,如果没有这个标记,第一个虚拟主机为默认虚拟主机。

1、修改主配置文件

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf       //修改为以下内容

#加入这行,意思是/usr/local/nginx/conf/vhost/下面所有以.conf结尾的都会加载

        include vhost/*.conf;

#这里方便实验先注释掉server的内容

#    server

#    {

#        listen 80;

#        server_name localhost;

#        index index.html index.htm index.php;

#        root /usr/local/nginx/html;

#        location ~ \.php$

#        {

#            include fastcgi_params;

#            fastcgi_pass unix:/tmp/php-fcgi.sock;

#            fastcgi_index index.php;

#            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

#        }   

#    }  

2、创建vhost目录及配置文件

[[email protected] ~]# mkdir /usr/local/nginx/conf/vhost

[[email protected] ~]# cd /usr/local/nginx/conf/vhost

[[email protected] vhost]# vim zlinux.conf        //写入以下内容

server

{

   listen 80 default_server;   //有这个标记的就是默认虚拟主机

   server_name zlinux.com;

   index index.html index.htm index.php;

   root /data/wwwroot/default;

}

 

[[email protected] vhost]# mkdir /data/wwwroot

[[email protected] vhost]# mkdir /data/wwwroot/default

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -s reload       //重新加载配置文件

[[email protected] vhost]# echo "这是默认主机" > /data/wwwroot/default/index.html

[[email protected] vhost]# curl -x127.0.0.1:80 zlinux.com

这是默认主机

[[email protected] vhost]# curl -x127.0.0.1:80 11223.com     //访问一个没有定义的网址,一会访问到zlinux.com

这是默认主机

三、用户认证

1、创建一个新的虚拟主机

[[email protected] vhost]# vim linuxtest.conf

server

{

   listen 80;                 

   server_name linuxtest.com;

   index index.html index.htm index.php;

   root /data/wwwroot/linuxxtest;

 

   location /

     {

       auth_basic         "Auth";

       auth_basic_user_file /usr/local/nginx/conf/htpasswd;

     }

}

[[email protected] vhost]# mkdir /data/wwwroot/linuxtest

[[email protected] vhost]# yum install -y httpd     //安装httpd,也可以用之前编译安装的apache2

[[email protected] vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd zlinux     //-c选项第一创建用户时使用,否则回清空用户

New password:

Re-type new password:

Adding password for user zlinux

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -s reload

两句核心,auth_basic打开认证,auth_basic_user_file指定用户密码文件。生成密码工具需要借助apache的htpasswd。Nginx不自带这个工具。

2、验证

[[email protected] vhost]# curl -x127.0.0.1:80 linuxtest.com -I

HTTP/1.1 401 Unauthorized

Server: nginx/1.12.2

Date: Tue, 13 Mar 2018 07:38:42 GMT

Content-Type: text/html

Content-Length: 195

Connection: keep-alive

WWW-Authenticate: Basic realm="Auth"

//401状态码,说明访问需要验证

[[email protected] vhost]# curl -x127.0.0.1:80 -u zlinux:123456 linuxtest.com      //加上用户名密码就能访问

这是用户认证测试主机

四、域名重定向

Nginx的域名重定向与httpd类似。

[[email protected] vhost]# vim moved.conf

server

{

    listen 80;

    #nginx可以配置多个主机名,apache只能使用ServerAlias来指定别名

    server_name testmoved.com testmoved2.com testmoved3.com;

    index index.html index.htm index.php;

    root /data/wwwroot/testmoved;

    #判断host是否为test.com

    if ($host != 'test.com')

    {  

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

    }

}

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[[email protected] vhost]# /usr/local/nginx/sbin/nginx -s reload

[[email protected] vhost]# mkdir /data/wwwroot/testmoved

[[email protected] vhost]# echo "重新定向测试成功" > /data/wwwroot/testmoved/index.html

[[email protected] vhost]# curl -x127.0.0.1:80 testmoved.com/

重新定向测试成功

[[email protected] vhost]# curl -x127.0.0.1:80 testmoved2.com/ -I

HTTP/1.1 301 Moved Permanently

Server: nginx/1.12.2

Date: Tue, 13 Mar 2018 08:07:21 GMT

Content-Type: text/html

Content-Length: 185

Connection: keep-alive

Location: http://testmoved.com/

Nginx负载均衡等环境组件的安装及配置

Nginx负载均衡等环境组件的安装及配置