nginx-1

今日内容:

1.nginx的基本介绍

nginx 是一个web服务器。

2.nginx基本介绍

1.高性能,近w个连接请求时,他的响应要比其他的web要快。
2.高扩展性:nginx功能模块化。官方提供了很多的优秀模块。
3.高可靠性:9999  99999(9代表宕机时间) 
4.热部署:不停止服务的情况下进行升级。 
5.互联网公司都选择Nginx  代理、缓存、负载均衡、静态资源处理、动静分离、LNMP、LNMT、LNMG 架构。

3.nginx的应用场景

1 web服务
2 负载均衡
3 代理缓存
4 安全服务 Https Lua
5 动静分离 Nginx+Tomcat
6 静态资源服务

4.nginx的基本组件

1.使用yum安装
 首先安装nginx的依赖环境
vim /etc/yum.repos.d nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install nginx -y
 执行nginx -v 即可看到安装的版本
2.使用源码安装
3.nginx的网址
http://nginx.org/en/linux_packages.html#RHEL-CentOS

5.nginx的目录结构

[root@web01 ~]# rpm -ql nginx      
/etc/logrotate.d/nginx        nginx日志轮转,用于logrotate服务的日
/etc/nginx
/etc/nginx/conf.d                nginx主配置文件
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf             编码转换映射转化文件(很少用到)
/etc/nginx/koi-win
/etc/nginx/mime.types           设置HTTP协议的Content-Type与拓展名对应关系
/etc/nginx/modules     Nginx目录模块
/etc/nginx/nginx.conf       #主配置文件 ( 驾驶员 )
/etc/nginx/scgi_params      cgi配置相关,fastcgi配置
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx          
/etc/sysconfig/nginx-debug   用于配置出系统守护进程管理器的管理方式      

/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules    
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx         #编译出来的二进制文件 ( 汽车 )
/usr/sbin/nginx-debug
/var/cache/nginx           Nginx的缓存目录
/var/log/nginx          #访问日志和错误日志

6.nginx的配置文件

[root@web01 conf.d]# cat /etc/nginx/nginx.conf 

user  nginx;                     # nginx进程是哪个用户来运行
worker_processes  1;    # 启动多少个worker进程

error_log  /var/log/nginx/error.log warn;# 错误日志存在哪里( 黑匣子 )
pid        /var/run/nginx.pid;# 每个进程运行起来都会存在一个pid文件,里面存放的是该进程的 ID  


events {
    worker_connections  1024;        #worker接收的连接数  1024 * worker_process
}                  


http {
    include       /etc/nginx/mime.types;#当nginx无法识别你这个文件时,则默认一访问就直接下载了。
    default_type  application/octet-stream;
#定义日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;    #访问日志的路径


    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;#长连接 ( 默认长连接保持 65s )

    #gzip  on;#压缩

    include /etc/nginx/conf.d/*.conf;#包含/etc/nginx/conf.d/目录下的所有以 .conf 结尾的文件。
}
################################################################
server {                    #server表示要配置网站,每个Server{} 代表一个网站,简称虚拟主机
    listen       80;                #这个网站监听80端口
    server_name  oldxu.com;         #这个网站的域名是什么

    location / {                #控制网站访问的路径
        root   /usr/share/nginx/html;       #定义网站源代码存放的路径
        index  index.html index.htm;        #默认返回哪个文件作为默认返回页
    }
}

7.nginx中的http、server、location之间的关系是?

http:主要用来解决用户的请求和响应。   比如www用户ttt用户
server:主要用来响应具体的某一个网站。
location:用于匹配网站的uri路径。 
http{} 下面可以有多个 Server{} 每个server{} 又可以有多个 location {} 

8.nginx运行一个游戏网站

1.准备一个游戏的源码   
2.准备一个目录,存放我们的游戏
[root@web01 ~]# mkdir /code
[root@web01 ~]# cd /code
[root@web01 ~]# rz  游戏
[root@web01 ~]#  unzip 游戏安装包
[root@web01 ~]# cd /code/
[root@web01 code]# ls
gedou  gedou.zip  images  index.html  js  README.md  sound
################################################################
[root@web01 xiaolai]# ls
ceshi  game  h5game.zip  img  index.html  readme.txt
3.配置Nginx
        #3.1 配置监听的端口
        #3.2 配置网站的域名
        #3.3 配置用户访问网站路径规则  location
        #3.4 配置默认返回的页面
[root@web01 ~]# cat /etc/nginx/conf.d/game.oldxu.com.conf 
server{
        listen 80;
        server_name game.oldxu.com;
        location / { 
                root /code;
                index index.html;
}

}
###############################################################
[root@web01 ~]# cat /etc/nginx/conf.d/h5xiaolai.com.conf 
server{
        listen 80;
        server_name h5xiaolai.com;
        location / {
        root /xiaolai;
        index index.html;
}


}

4.检查nginx的语法  {} 成对出现并且每一条指令的结尾都有;号
[root@web01 code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5.重启服务,让配置生效
[root@web01 code]# systemctl restart nginx

9.nginx访问网站的原理(详细过程)

nginx.jpg
第一步:浏览器请求  game.oldxu.com 
第二步:浏览会将请求的 game.oldxu.com   -->  http://game.oldxu.com/
第三步:浏览器对 域名进行解析    DNS解析  ( 我们域名是假的,所以,我们配置 hosts 劫持 )
第四步:浏览器通过随机端口,像服务端 80 端口建立TCP连接
第五步:浏览器发起HTTP的请求
第六步:请求被80端口对应的Nginx应用所接受,会交给http层,发现请求的域名是  game.oldxu.com 
第七步:接下来检查所有配文件,看是否有配置文件 满足用户请求的域名。   server_name 
第八步:满足域名匹配之后,检查用户 请求的路径,   /    就会被location /   所匹配
第九步:返回结果,/code下面的index.html 给用户
第十步:nginx应用程序像内核发送请求,获取磁盘中的某个文件,磁盘将数据拷贝至内核的缓存区,然后在 拷贝到nginx应用进程的缓存区
第十一步:nginx应用进程封装数据报文,回传给客户端浏览器。

10.访问/code/gedou #出现403的错误如何解决

方式一:root /code/gedou;   
方式二:game.oldxu.com/gedou/index.html   --> /code/gedou/index.html
找不到为啥是403 而不是404 ?
本来要返回的是 /code/index.html   可你只有  /code  所以就403 ,权限不对,返回的默认主页找不到了。

你可能感兴趣的:(nginx-1)