一、Nginx安装
1. 下载Nginx源码包
2. 解压源码包
tar zxvf nginx-1.12.1.tar.gz
3. 进入源码包目录
cd nginx-1.12.1
4. 进行编译
./configure --prefix=/usr/local/nginx
make && make install
5. 创建启动脚本
vim /etc/init.d/ngin
添加以下内容
#!/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
6. 加入chkconfig进行管理
chkconfig --add nginx
chkconfig nginx on
7. 进入配置文件,自己创建配置文件
cd /usr/local/nginx/conf/
mv nginx.conf nginx.conf
vim 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
3
m;
client_body_timeout
3
m;
send_timeout
3
m;
connection_pool_size
256
;
client_header_buffer_size
1
k;
large_client_header_buffers
8
4
k;
request_pool_size
4
k;
output_buffers
4
32
k;
postpone_output
1460
;
client_max_body_size
10
m;
client_body_buffer_size
256
k;
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
1
k;
gzip_buffers
4
8
k;
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;
}
}
}
user 用来定义启动nginx的用户
worker_processes
2 用来定义子进程有几个
error_log 错误日志存放地址
pid pid地址
worker_rlimit_nofile
51200 定义nginx最多可以打开多少个文件
8. 编辑完成配置文件后检查是否有错误
/usr/local/nginx/sbin/nginx -t
9.启动nginx
service nginx start
二、Nginx默认虚拟主机
1. 进入编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
2. 删除掉关于server的这一段,添加以下行
include vhost/*.conf;
在conf目录下添加一个vhost的子目录
3. 进入conf目录,创建一个vhost目录
mkdir vhost
进入vhost目录,创建一个虚拟主机配置文件,我的虚拟主机叫做aaa.com
cd vhost
vim aaa.com.conf
在aaa.com.conf文件中添加如下内容
server
{
listen 80 default_server; #监听端口,
default_server表示默认虚拟主机
index index.html index.htm index.php;
root /data/wwwroot/default; #定义网站的目录
}
4. 创建网站的目录
mkdir /data/wwwroot/default
5. 创建一个测试页面,内容自己随便填写即可
vim
/data/wwwroot/default/
index.html
6. 编辑完成配置文件后检查是否有错误
/usr/local/nginx/sbin/nginx -t
三、nginx用户认证
1. 编辑虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/test.com
.conf
2. 在配置文件中添加如下内容
server
{
listen 80;
server_name test.com
;
index index.html index.htm index.php;
root /data/wwwroot/test.com
; #指定目录
location /
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd; #指定密码文件所在的位置
}
}
3. 安装生成密码工具htpasswd
yum install -y httpd
4. 生成密码
htpasswd -c /usr/local/nginx/conf/htpasswd aming
5. 密码文件配置完成后需要重新加载nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
6. 创建test目录及index文件
[root@localhost vhost]# mkdir /data/wwwroot/
test.com
[root@localhost vhost]# echo "test" > /data/wwwroot/
test.com/index.html
7. 进行测试是否成功
HTTP/1.1 401 Unauthorized #当不输入用户名及密码访问的时候出现104
Server: nginx/1.12.1
Date: Wed, 14 Mar 2018 00:16:12 GMT
Content-Type: text/html
Content-Length: 195
Connection: keep-alive
WWW-Authenticate: Basic realm="Auth"
HTTP/1.1 200 OK #-u 指定用户及密码后成功访问,出现200
Server: nginx/1.12.1
Date: Wed, 14 Mar 2018 00:16:40 GMT
Content-Type: text/html
Content-Length: 5
Last-Modified: Wed, 14 Mar 2018 00:15:00 GMT
Connection: keep-alive
ETag: "5aa86984-5"
Accept-Ranges: bytes
8.针对站点下的某个目录进行用户认证,比如test.com下的admin目录,
server
{
listen 80;
server_nametest.com
;
index index.html index.htm index.php;
root /data/wwwroot/test.com
;
location /admin/
#只需要在这里指定目录即可,非常简单
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
}
9.
针对站点下的某个页面进行用户认证,比如test.com下的admin.php
server
{
listen 80;
index index.html index.htm index.php;
location ~ admin.php
#匹配admin.php
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
}
四、Nginx域名重定向
1. 编辑虚拟主机配置文件,这里还是使用test.com进行测试
vim /usr/local/nginx/conf/vhost/test.com
.conf
2. 在配置文件中写入如下内容
server
{
listen 80;
server_name test.com test2.com test3.com
;
index index.html index.htm index.php;
root /data/wwwroot/test.com
;
if ($host != 'test.com
' ) {
rewrite ^/(.*)$ http://test.com/$1
permanent;
}
3.密码文件配置完成后需要重新加载nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
4. 进行测试
[root@localhost vhost]# curl -x127.0.0.1:80 test2.com/index.html
-I #使用test2.com进行访问
HTTP/1.1 301 Moved Permanently #可以看到显示301
Server: nginx/1.12.1
Date: Wed, 14 Mar 2018 00:42:11 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location:
http://test.com/index.html #域名显示重定向到test.com