概述
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
最后
以上就是炙热灰狼为你收集整理的6月7日任务的全部内容,希望文章能够帮你解决6月7日任务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复