12.6 Nginx安装
12.7 默认虚拟主机
12.8 Nginx用户认证
12.9 Nginx域名重定向
12.6 Nginx安装
步骤
1.进入src目录下载并解压Nginx包
1 | [root@localhost php-7.1.6]# cd /usr/local/src/ |
2.进入Nginx包里并初始化
1 | [root@localhost src]# cd nginx-1.8.0 |
1 | [root@localhost nginx-1.8.0]# ./configure --prefix=/usr/local/nginx |
3.编译和安装
1 | [root@localhost nginx-1.8.0]# make |
4.在etc/init.d中自定义服务脚本
1 | [root@localhost nginx-1.8.0]# vim /etc/init.d/nginx |
复制以下代码,也可以去下面网址下载 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx1
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68#!/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
5.修改服务权限并添加为开机启动
1 | [root@localhost nginx-1.8.0]# chmod 755 /etc/init.d/nginx |
6.进入Nginx的配置目录下并自定义配置文件
1 | [root@localhost nginx-1.8.0]# cd /usr/local/nginx/conf/ |
conf/
目录下本来自带nginx.conf的配置文件,这里我们要自定义他因此把原本的配置文件改名字1
2[root@localhost conf]# mv /usr/local/nginx/conf/nginx.conf nginx.conf.1 ##改名为nginx.conf.1
[root@localhost conf]# vim nginx.conf
复制以下代码,也可以去下面网址下载 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf1
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61user 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_pass 127.0.0.01:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}
user
是定义启动进程的用户和组 worker_processes
表示启动的子进程数量 worker_rlimit_nofile
表示最多打开的文件数量 use epoll
使用epoll模式 worker_connections
进程最多的连接数 server
部分相当于是一个虚拟主机 第一个server是默认的虚拟主机 location ~ \.php$
部分 用来解析PHP fastcgi_pass指定PHP服务的监听端口或者sock 也可以使用端口方式fastcgi_pass 127.0.0.01:9000;
主要看php-fpm.conf定义用哪种方式通信的
7.检查语法和启动Nginx服务
1 | [root@localhost conf]# /usr/local/nginx/sbin/nginx -t |
1 | [root@localhost conf]# service nginx start |
8.测试PHP解析
1 | [root@localhost conf]# vim /usr/local/nginx/html/1.php |
12.7 Nginx默认虚拟主机
在/usr/local/nginx/conf/nginx.conf
配置文件里面server
部分是定义虚拟主机,我们也可以让每一个站点(虚拟主机)都有独立的虚拟主机配置文件来方便管理。这里把Server部分删除掉 并加入 include vhost/*.conf;
这个意思是在vhost目录下带.conf的文件是虚拟主机配置文件
步骤
1.修改nginx.conf 加上include语句
1 | [root@localhost conf]# vim /usr/local/nginx/conf/nginx.conf |
最后加上1
include vhost/*.conf;
2.在conf目录下创建vhost目录
1 | [root@localhost conf]# mkdir /usr/local/nginx/conf/vhost/ |
3.创建虚拟主机配置文件 这里以test1.com为例
1 | [root@localhost conf]# cd vhost/ |
4.自定义虚拟主机内容
1 | server |
listen
指定监听端口 default_server
表示默认虚拟主机 不设置把配置文件第一位的虚拟主机为默认 server_name
域名 index
索引页 root
网站存放的目录
5.添加网站目录和页面
1 | [root@localhost vhost]# mkdir -p /var/www/ |
6.检查语法并加载配置文件
1 | [root@localhost vhost]# /usr/local/nginx/sbin/nginx -t |
测试
使用curl命令1
2[root@localhost vhost]# curl -x 192.168.80.102:80 test1.com
test1
使用浏览器
12.8 Nginx用户认证
步骤
1.创建站点的配置文件 以test2.com为例
1 | [root@localhost vhost]# vim test2.com.conf |
1 | server |
auth_basic
定义用户验证名字 auth_basic_user_file
指定用户文件路径
2.使用htpasswd工具来创建用户文件
1 | [root@localhost vhost]# yum install -y httpd |
-c
创建新文件在/usr/local/nginx/conf/htpasswd -m
使用md5加密
3.创建站点目录和页面
1 | [root@localhost vhost]# mkdir /var/www/test2/ |
4.检查语法并加载配置文件
1 | [root@localhost vhost]# /usr/local/nginx/sbin/nginx -t |
测试
使用curl命令1
2
3
4
5
6
7
8
9
10[root@localhost vhost]# curl -x 192.168.80.102:80 test2.com
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.8.0</center>
</body>
</html>
[root@localhost vhost]# curl -utest1:123 -x 192.168.80.102:80 test2.com
test2
使用浏览器访问
针对目录来做用户验证
在location后加入相应的目录即可1
2
3
4
5
6
7
8
9
10
11
12
13 server
{
listen 80;
server_name test2.com;
index index.html index.htm index.php;
root /var/www/test2;
location /admin/
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
}
这个对admin目录做用户验证
针对某个文件或者链接做做用户验证
在location后加入~ 和相应的文件即可1
2
3
4
5
6
7
8
9
10
11
12
13 server
{
listen 80;
server_name test2.com;
index index.html index.htm index.php;
root /var/www/test2;
location ~ admin.php
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
}
~ admin.php
是匹配admin.php 也就是指定admin.php
12.9 Nginx域名重定向
在Nginx中server_name
后面支持跟多个域名
步骤
1.创建站点的配置文件 以test2.com为例
1 | server |
^/(.*)$
表示 http://test2.com/
后面的所有部分 permanent
表示永久重定向 redirect
表示临时重定向
2.检查语法并加载配置文件
1 | [root@localhost vhost]# /usr/local/nginx/sbin/nginx -t |
测试
使用curl命令1
2
3
4
5
6
7
8[root@localhost vhost]# curl -x 192.168.80.102:80 www.test2.com -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Thu, 07 Jun 2018 16:55:22 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://test2.com/