6月7日任务

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

12.9 Nginx域名重定向

Nginx安装



conf:配置文件

html: 样例文件

logs:日志

sbin:进程(核心文件)

/usr/local/nginx/sbin/nginx -t 查看是否有错误


给Nginx 创建配置文件和启动脚本



mv nginx.conf nginx.conf.bak 重新配置 vim nginx.conf文件,见网站

配置文件中:

①user nobody nobody用来定义启动Nginx服务是哪个用户(网站上传文件所属主/组,由进程的用户  完成),如 Nginx想去某个目录访问图片,以哪个用户身份读,则在user中定义

②worker_processes 子进程数

③worker_rlimit_nofile: Nginx最多可以打开文件数

④ events下 1> use epoll:使用epoll模式 2>worker_connections 最多连接数

⑤server和apache的virtual host类似,每个server对应一个虚拟主机


其中server_name表示域名

web服务,listen 80监听80端口,如果nginx服务在,但是没有监听80端口,则有两种可能

①没有配置server服务器端的文件

②nginx.conf中未识别server配置

Index: nginx欢迎页文本

root :网站根目录

Location ~ \.php$:用来配置解析php,Nginx通过调用php-fpm服务解析php,通过

fastcgi_pass unix: /tmp/php-fcgi.sock; 或者fastcgi_pass 127.0.0.1:9000 指定php-fpm的监听socket或端口



如上图所示,一般父进程所属组是root,子进程为服务名

curl localhost看到nginx欢迎页面


因为/usr/local/nginx/html下的index.hmtl文件


能访问到的原因是因为nginx.conf文件中server定义的root网站根目录



访问内容一致,相当于默认虚拟主机

测试php解析:

vim /usr/local/nginx/html/1.php



Nginx默认虚拟主机


在nginx.conf配置文件中删除server部分,并加入include vhost/*.conf


在/usr/local/nginx/conf目录下创建新的vhost目录 ,vim aaa.com.conf新配置文件


加入如下内容,其中default_server代表默认虚拟主机


创建网站根目录mkdir /data/wwwroot/default,并编辑文件index.html如下图



检查语法是否有错误 /usr/local/nginx/sbin/nginx -t ,故意写错后,再执行出现如下报错(保持良好习惯,每次修改或者编辑配置文件都执行语法排错操作),更改后service nginx restart或者/usr/local/nginx/sbin/nginx -s reload都可以



改回来后,排错,重新加载

测试: curl localhost 显示的是index.html的索引信息 

           curl -x127.0.0.1:80 aaa.com/bbc.com/bbcc.com 任何域名,只要解析过来,指向该服务器都能访问到该站点(默认虚拟主机)


总结:nginx服务在查找server的时候支持include语法

①如vhost中有多个.conf文件会按照字符查找方式优先加载aaa文件(如果 还有bbb,ccc.conf)

②或者在vhost下的.conf文件中找到标记位 default_server


Nginx用户认证


配置文件详情如下图


在vhost目录下创建test.com.conf并编辑



-c第二次不用加(否则会覆盖),-s reload相对于restart的好处是如果配置文件有错误时不会生效,即不会破坏原来的Nginx服务,而restart则可能因为配置文件问题导致Nginx服务停止

测试:

①限制根目录


②限制某目录(范例中为/admin/)


创建mkdir /data/wwwroot/test.com/admin  

echo "This is admin dir" > /data/wwwroot/test.com/admin/index.html

如下图测试成功


③针对某个URL,如admin/php,只需要修改vhost/test.com.conf中Location下~ admin.php




但是如果是test.com/admin会显示301跳转,因为admin不加斜杠被系统识别成目录,所以还是跳转到test/com/admin/下


Nginx域名重定向


Nginx和Apache不同,虚拟主机支持server_name加多个域名,而Apache只会识别第一个,想要多加需要定义server_alias


如上图,重新编辑vhost/conf下的test.com.conf 加入红色字段,其中 ^/相当于 http://$host/即不管以什么为开头,都跳转成后面的域名,permanent 301, redirect 302;

测试:


如果servername不在test.com.conf文件中,则会跳转到默认虚拟主机站点


扩展

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.htmlhttp://unixman.blog.51cto.com/10163040/1711943

猜你喜欢

转载自blog.csdn.net/fuel91/article/details/80628439