天天看点

12.6 Nginx安装;12.7 Nginx默认虚拟主机;12.8 Nginx用户认证;12.9 Nginx域名重定向

12.6 Nginx安装

1. 进入下载安装包目录:

[root@hao-01 ~]# cd /usr/local/src/

2. 下载nginx安装包:

3. 解包解压nginx安装包:

[root@hao-01 src]# tar zxf nginx-1.12.1.tar.gz

4. 进入解压nginx目录下:

[root@hao-01 src]# cd nginx-1.12.1

5. 编译nginx:

[root@hao-01 nginx-1.12.1]# ./configure --prefix=/usr/local/nginx

6. make和make install:

[root@hao-01 nginx-1.12.1]# make && make install

7. 在/etc/init.d/目录下,创建nginx启动脚本,并写入内容:

[root@hao-01 nginx-1.12.1]# vim /etc/init.d/nginx

<a href="https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx" target="_blank">https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx</a>

写入内容如下:

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

reload()

echo -n $"Reloading $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -HUP

restart()

stop

start

configtest()

$NGINX_SBIN -c $NGINX_CONF -t

return 0

case "$1" in

start)

;;

stop)

reload)

reload

restart)

restart

configtest)

configtest

*)

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

RETVAL=1

esac

exit $RETVAL

8. 给nginx(启动脚本) 设定755权限:

[root@hao-01 nginx-1.12.1]# chmod 755 /etc/init.d/nginx

9. 添加 nginx服务 到服务列表:

[root@hao-01 nginx-1.12.1]# chkconfig --add nginx

10. 设定 nginx服务 开机启动:

[root@hao-01 nginx-1.12.1]# chkconfig nginx on

11. 进入...conf目录下:

[root@hao-01 nginx-1.12.1]# cd /usr/local/nginx/conf/

12. 把...conf目录下的nginx.conf文件重命名:

[root@hao-01 conf]# mv nginx.conf nginx.conf.1

13. 在...conf目录下,创建新的nginx.conf文件,并写入内容:

[root@hao-01 conf]# vim /usr/local/nginx/conf/nginx.conf

<a href="https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf" target="_blank">https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf</a>

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_pass 127.0.0.1:9000;

fastcgi_index index.php;

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

14. 检测nginx配置文件是否有错?

[root@hao-01 conf]# /usr/local/nginx/sbin/nginx -t

15. 启动nginx服务:

[root@hao-01 conf]# /etc/init.d/nginx start

16. 搜索nginx服务是否启动?

[root@hao-01 conf]# ps aux |grep nginx

17. 创建一个1.php测试文件:

[root@hao-01 conf]# vim /usr/local/nginx/html/1.php

&lt;?php

echo "This is nginx test page.";

18. curl访问localhost域名下的1.php测试文件:

12.7 Nginx默认虚拟主机

1. 编辑nginx.conf配置文件:

写入一行内容:

2. 在当前目录下,创建vhost目录:

[root@hao-01 conf]# mkdir /usr/local/nginx/conf/vhost

3. 进入...vhost目录下:

[root@hao-01 conf]# cd /usr/local/nginx/conf/vhost

4. 在当前...vhost目录下,创建一个aaa.com.conf文件,并写入内容:

[root@hao-01 vhost]# vim /usr/local/nginx/conf/vhost/aaa.com.conf

写入内容:

listen 80 default_server;

server_name aaa.com;

root /data/wwwroot/default;

<a href="https://s2.51cto.com/wyfs02/M02/9E/28/wKiom1mMDvjxmGpKAAAgXTjfIbs656.png" target="_blank"></a>

5. 创建default目录:

(如果根目录下,没有/data/wwwroot/目录,需自行创建即可)

[root@hao-01 vhost]# mkdir /data/wwwroot/default

6. 进入...default目录下:

[root@hao-01 vhost]# cd /data/wwwroot/default/

7. 在当前...default目录下,创建一个index.html文件,并写入内容:

[root@hao-01 default]# vim index.html

This is the default site.

8. 检测nginx配置文件是否有错?

[root@hao-01 default]# /usr/local/nginx/sbin/nginx -t

9. 重新加载nginx配置文件(非重启!):

[root@hao-01 default]# /usr/local/nginx/sbin/nginx -s reload

10. 测试curl访问设定的默认虚拟主机主域名aaa.com:

11. 测试curl访问非默认虚拟主机的主域名111.com:

(访问111.com,跳转到了默认虚拟主机的主域名aaa.com上)

12.8 Nginx用户认证

网站主页面(根目录)访问受限(需用户认证)

1. 进入...vhost目录下:

[root@hao-01 ~]# cd /usr/local/nginx/conf/vhost/

2. 在当前...vhost目录下,创建一个index.html文件,并写入内容:

[root@hao-01 vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf

server_name test.com;

root /data/wwwroot/test.com;

location /

auth_basic "Auth";

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

3. yum安装的apache:直接用htpasswd命令,创建nginx用户名密码!

(没有安装apache,用yum安装httpd也可以!yum install httpd)

(从创建第二个,不要-c参数,要不会把之前创建用户名的全部覆盖!!!)

[root@hao-01 vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd hao

4. 编译安装的apache:需用htpasswd命令的绝对路径执行,创建nginx用户名密码!创建(从创建第二个,不要-c参数,要不会把之前创建用户名的全部覆盖!!!)

[root@hao-01 vhost]# /usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd hao

5. 查看nginx存放用户密码的htpasswd文件内容:

6. 创建nginx第二个用户(切记htpasswd 后面不要跟-c):

[root@hao-01 vhost]# /usr/local/apache2.4/bin/htpasswd /usr/local/nginx/conf/htpasswd hao1

7. 再次查看nginx存放用户密码的htpasswd文件内容:

10. 在/data/wwwroot/目录下,创建test.com虚拟主机网站目录:

[root@hao-01 vhost]# mkdir /data/wwwroot/test.com/

11. 在...test.com目录下,创建index.html文件,并把" "里的内容,重定向到此文件中:

[root@hao-01 vhost]# echo "test.com" &gt; /data/wwwroot/test.com/index.html

12. curl 访问test.com网站,提示401,原因没有用户名密码授权!

13. curl -u指定用户名:密码 访问test.com网站:

(访问到了网站内容;表示用户认证成功,访问通)

网站根目录下,指定子目录访问受限(需用户认证)

1. 在/data/wwwroot/test.com网站目录下,创建admin目录:

[root@hao-01 vhost]# mkdir /data/wwwroot/test.com/admin/

2. 在...admin目录下,创建index.html文件,并把" "里的内容,重定向到此文件中:

[root@hao-01 vhost]# echo "admin mulu" &gt; /data/wwwroot/test.com/admin/index.html

3. 编辑test.com虚拟主机配置文件:

编辑内容(指定认证目录为:根目录下的admin/目录):

   location /admin/

<a href="https://s1.51cto.com/wyfs02/M02/9E/29/wKiom1mMD-nRgBvxAAAvzNlLkkw510.png" target="_blank"></a>

4. 检测nginx配置文件是否有错?

5. 重新加载nginx配置文件(非重启!):

6. curl 访问test.com/admin/目录,提示401,原因没有用户名密码授权!

7. curl -u指定用户名:密码 访问test.com/admin/目录:

8. 根目录没有设定认证,现在curl不指定用户名密码直接可以访问test.com网站:

12.9 Nginx域名重定向

1. 编辑test.com虚拟主机配置文件:

重新写入内容:

 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;

           }

<a href="https://s2.51cto.com/wyfs02/M01/9E/29/wKiom1mMEHThdejbAABK0ihUmmI609.png" target="_blank"></a>

2. 检测nginx配置文件是否有错?

3. 重新加载nginx配置文件(非重启!):

4. curl 访问副域名test2.com,跳转到了主域名,状态码是301:

5. curl 访问副域名test3.com,跳转到了主域名,状态码是301:

本文转自 主内安详 51CTO博客,原文链接:http://blog.51cto.com/zhuneianxiang/1955083,如需转载请自行联系原作者

上一篇: Engineer01