12.6 Nginx安装;12.7 Nginx默认虚拟主机;12.8 Nginx用户认证;12.9

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12.6 Nginx安装;12.7 Nginx默认虚拟主机;12.8 Nginx用户认证;12.9相关的知识,希望对你有一定的参考价值。

扩展:

nginx.conf 配置详解 :

http://www.ha97.com/5194.html

http://my.oschina.net/duxuefeng/blog/34880

nginx rewrite四种flag :

http://www.netingcn.com/nginx-rewrite-flag.html

http://unixman.blog.51cto.com/10163040/1711943

12.6 Nginx安装

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

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

2. 下载nginx安装包

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

3. 解包解压nginx安装包:

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

4. 进入解压nginx目录下:

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

5. 编译nginx

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

6. makemake install

[[email protected] nginx-1.12.1]#  make && make install

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

https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx

[[email protected] nginx-1.12.1]# 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

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

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

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

[[email protected] nginx-1.12.1]# chkconfig --add nginx

10. 设定 nginx服务 开机启动

[[email protected] nginx-1.12.1]# chkconfig nginx on

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

[[email protected] nginx-1.12.1]# cd /usr/local/nginx/conf/

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

[[email protected] conf]# mv nginx.conf nginx.conf.1

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

https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf

[[email protected] conf]# 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_pass 127.0.0.1:9000;

           fastcgi_index index.php;

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

       }    

   }

}

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

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

15. 启动nginx服务:

[[email protected] conf]# /etc/init.d/nginx start

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

[[email protected] conf]# ps aux |grep nginx

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

[[email protected] conf]# vim /usr/local/nginx/html/1.php

写入内容如下:

<?php

echo "This is nginx test page.";

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

[[email protected] conf]# curl localhost/1.php

技术分享图片技术分享图片

12.7 Nginx默认虚拟主机

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

[[email protected] conf]# vim /usr/local/nginx/conf/nginx.conf

删掉黄框中内容:

技术分享图片技术分享图片

写入一行内容:

   include vhost/*.conf;

技术分享图片技术分享图片

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

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

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

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

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

[[email protected] vhost]# vim /usr/local/nginx/conf/vhost/aaa.com.conf

写入内容:

server

{

   listen 80 default_server;

   server_name aaa.com;

   index index.html index.htm index.php;

   root /data/wwwroot/default;

}

技术分享图片技术分享图片

5. 创建default目录:

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

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

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

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

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

[[email protected] default]# vim index.html

写入内容:

This is the default site.

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

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

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

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

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

[[email protected] default]# curl -x127.0.0.1:80 aaa.com

技术分享图片技术分享图片

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

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

[[email protected] default]# curl -x127.0.0.1:80 111.com

技术分享图片技术分享图片

12.8 Nginx用户认证

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

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

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

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

[[email protected] vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf

写入内容:

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. yum安装apache:直接用htpasswd命令,创建nginx用户名密码! (没有安装apache,用yum安装httpd也可以!yum install httpd)

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

[[email protected] vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd hao

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

[[email protected] vhost]# /usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd hao

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

[[email protected] vhost]# cat /usr/local/nginx/conf/htpasswd

技术分享图片技术分享图片

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

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

[[email protected] vhost]# /usr/local/apache2.4/bin/htpasswd /usr/local/nginx/conf/htpasswd hao1

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

[[email protected] vhost]# cat /usr/local/nginx/conf/htpasswd

技术分享图片技术分享图片

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

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

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

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

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

[[email protected] vhost]# mkdir /data/wwwroot/test.com/

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

[[email protected] vhost]# echo "test.com" > /data/wwwroot/test.com/index.html

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

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

技术分享图片技术分享图片

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

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

[[email protected] vhost]# curl -uhao:admin -x127.0.0.1:80 test.com

技术分享图片技术分享图片

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

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

[[email protected] vhost]# mkdir /data/wwwroot/test.com/admin/

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

[[email protected] vhost]# echo "admin mulu" > /data/wwwroot/test.com/admin/index.html

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

[[email protected] vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf

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

   location /admin/

技术分享图片技术分享图片

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

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

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

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

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

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

技术分享图片技术分享图片

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

[[email protected] vhost]# curl -uhao:admin -x127.0.0.1:80 test.com/admin/

技术分享图片技术分享图片

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

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

技术分享图片技术分享图片

12.9 Nginx域名重定向

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

[[email protected] vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf

重新写入内容:

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;

   }

}

技术分享图片技术分享图片

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

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

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

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

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

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

技术分享图片技术分享图片

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

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

技术分享图片技术分享图片

以上是关于12.6 Nginx安装;12.7 Nginx默认虚拟主机;12.8 Nginx用户认证;12.9的主要内容,如果未能解决你的问题,请参考以下文章

12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx

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

12.6 Nginx安装;12.7 Nginx默认虚拟主机;12.8 Nginx用户认证;12.9

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

2018-6-7

2018.3.13 12周2次课