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/ |