nginx服务

Posted 森森2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx服务相关的知识,希望对你有一定的参考价值。

 

nginx--->是一个软件,web软件,提供web服务

nagios监控用的

 

apache与nginx都是http协议

 

最老是apache,很大很全很稳定,太重

针对apache太重的问题,nginx就是轻便装,

nginx在并发上采用了网络io模型和反向代理很好

网络io:网络传输数据,

nginx用epoll模型,使nginx处理速度快,并发做得好(同时处理多个任务)

 

把CentOS-相关的yum源都移到yum源文件夹中

[root@localhost yum.repos.d]# mv /root/aa/CentOS-* .

[root@localhost yum.repos.d]# ls

CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo

[root@localhost yum.repos.d]#

 

清缓存

[root@localhost yum.repos.d]# yum clean all

 

安装nginx的扩展源

[root@localhost yum.repos.d]# yum install epel-release –y

安装完毕后看到的yum源:

centos-7.repo          CentOS-fasttrack.repo  epel.repo

CentOS-Base.repo       CentOS-Media.repo      epel-testing.repo

CentOS-CR.repo         CentOS-Sources.repo    httpd.repo

CentOS-Debuginfo.repo  CentOS-Vault.repo

 

安装nginx

yum install nginx -y

查看接收目录

vim /etc/nginx/nginx.conf

 

从上面的程序,我们看到目录是:

root /usr/share/nginx/html

 

尝试执行看看,先建个目录和文件/usr/share/nginx/html/a/b/c.txt

[root@bogon ~]# mkdir /usr/share/nginx/html/a/b/ -p

[root@bogon ~]# echo \'welecome boy\'>/usr/share/nginx/html/a/b/c.txt

要让上面的生效,就要重启

[root@bogon ~]# systemctl restart nginx

这里有个问题:restart是先执行

systemctl stop nginx

再执行

systemctl start nginx可能停了就起不来,网站就挂了。

为了减少风险,我只是重新加载,reload就行,只读新内容

 

看看启动状态

[root@bogon ~]# systemctl status nginx

查看我的IP:ifconfig

192.168.88.128:

在浏览器输入http://192.168.88.128:80/a/b/c.txt

发现连接不上,404页面

关防火墙

systemctl stop firewalld

再次连接,有结果:

原理是

Nginx会访问它的配置文件,找到根目录

nginx----------------ànginx.conf----------------à/usr/share/nginx/html/a/b/c.txt------走http协议------看到内容

 

如果开机也不想开防火墙,则

systemctl disable firewalld

开机启动防火墙

systemctl enable firewalld

开机启动nginx

systemctl enable nginx

 

操作防火墙(是否内核防火墙,公司往往有硬件防火墙)

Iptables

 

 Uri地址是唯一的,url是百度,uri是我通过百度然后下载到本地,文件通过http协议下载到我这里

 

http://202.102.10.10:80/a/b/c.txt

http://-------->server端是基于http协议给client发数据的

202.102.10.10:80--->定位到全世界范围内唯一一款软件是谁

/a/b/c.txt--->/usr/share/nginx/html/a/b/c.txt(软件的根)

 

 补充:

location是url地址、/是统一位置在哪里,如果不写的话,就默认/usr/share/nginx/html;,也可以写一个目录

root /var/www/html;

        location / { root /var/www/html

        }

修改完重启:

systemctl restart nginx

这里有个问题:restart是先执行

systemctl stop nginx

再执行

systemctl start nginx可能停了就起不来,网站就挂了。

为了减少风险,我只是重新加载,reload就行,只读新内容

[root@localhost ~]# mkdir -p /var/www/html/

[root@localhost ~]# echo \'123453434342323\'> /var/www/html/index.html

在访问之前的路径就404

 

 

 

因为默认路径已经修改为/var/www/html/

http://192.168.88.128/index.html

如果我把/index.html去掉,发现也可以访问

 

location是url地址、/是统一位置在哪里,如果不写的话,就默认/usr/share/nginx/html;,也可以写一个目录

root /var/www/html;

/是如果root /var/www/html不带后面的东西,就默认index.html,如果没有index.html,就访问index.htm,如果也没有,就访问index.a

        location / { root /var/www/html

         index index.html index.htm index.a;

        }

 

网站往往都默认打开首页:

index.html

我尝试默认该为a.txt,如下:

[root@localhost ~]# vim /etc/nginx/nginx.conf

        location / { root /var/www/html

         index a.txt index.html index.htm index.a;

        }

创建文件a.txt

[root@localhost ~]# touch /var/www/html/a.txt

[root@localhost ~]# echo \'I love you\' > /var/www/html/a.txt

[root@localhost ~]# systemctl reload nginx

 

 

 

访问记录

tail -f /var/log/nginx/access.log

 

192.168.88.1 - - [18/Nov/2017:13:50:04 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" "-"

客户端写的日志

    log_format  main  \'$remote_addr - $remote_user [$time_local] "$request" \'

                      \'$status $body_bytes_sent "$http_referer" \'

                      \'"$http_user_agent" "$http_x_forwarded_for"\';

我的IP

192.168.88.1=\'$remote_addr

-=-

-=$remote_user

[18/Nov/2017:13:50:04 +0800]= [$time_local]

"$request"是请求:"GET / HTTP/1.1" http1.1是最新的协议

$status=304,如果200是访问成功

$body_bytes_sent 0个字节,14是14个字节

$http_referer ="-"http协议,referer可以之前上一个页面,如果一个教学资源需要在看了广告后才能下载,而一些人盗链了,不用广告也可以下载,那referer就是他的页面,我们发现如果referer不是我们的页面的话,就要先打开我们的页面,才能下载。

$http_user_agent:我的浏览器

$http_x_forwarded_for

可以自己定义日志格式:

    log_format  main  \'$remote_addr - $remote_user [$time_local] "$request" \'

                      \'$status $body_bytes_sent "$http_referer" \'

                      \'"$http_user_agent" "$http_x_forwarded_for"\';

    log_format  aaa  \'$remote_addr - [$time_local] "$request"\';

 

    access_log  /var/log/nginx/access.log  aaa;

 

以上是关于nginx服务的主要内容,如果未能解决你的问题,请参考以下文章

Nginx网站服务——基础服务与访问控制

《Nginx高性能Web服务器详解》

Linux服务器 配置nginx 1.12.2

nginx可作为json服务器吗;具体方法?

Web服务------Nginx网站服务(图文详解)

使用nginx搭建RTMP服务器