Nginx应用

Web  服务 : Apache    nginx    tomcat

网页:

            静态网页:.html    .htm    结尾

            动态网页:.jsp    .php    结尾

nginx    简述

                    Apache:2w                nginx:5w

单Apache:同时处理客户端的理想值是2w

单nginx:同时处理客户的理想值是5w

 nginx和apache有什么区别?

1、nginx开发采用的是epoll模型,是异步非阻塞:apache采用的是select,是同步阻塞

2、nginx支持    负载均衡(既支持4层-传输层    又支持7层的-应用层)    反向代理,配置比apache简单

3、nginx处理静态页面要比aache快,但是动态页面的处理能力就不如apache

Nginx        是一个典型的七层        SLB

LVS        四层的负载均衡

Haproxy        即支持四层有支持七层

 nginx在官方维护的有三个版本

Mainine   vereion:    开发版

Stabe    version    最新稳定版

一、下载Nginx源文件

进入nginx官网下载nginx的稳定版本,

下载:wget http://nginx.org/download/nginx-1.12.0.tar.gz

二、检查安装依赖项

执行下面的命令安装nginx的依赖库:

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

三、配置Nginx安装选项

我这里只配置安装到/opt目录下,其它选项可执行./configuration –help查看。
cd nginx安装目录,执行如下命令:

./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx

四、编译并安装

make && make install

五、启动、停止、重启

# 1.启动nginx
shell> nginx
# 可通过ps -ef | grep nginx查看nginx是否已启动成功
# 2.停止nginx
shell> nginx -s stop
# 3. 重新启动
shell> nginx -s reload

6560691316ee43cd9a225b02dc9ce120.png

 nginx默认配置启动成功后,会有两个进程,一个主进程(守护进程),一个工作进程。主进程负责管理工作进程,工作进程负责处理用户的http请求。

六、配置nginx开机启动
将/usr/bin/nginx命令添加到/etc/rc.d/rc.local文件中,rc.local文件会在系统启动的时候执行。但CentOS7建议将开机启动服务写成服务描述文件添加到系统服务中,所以rc.local默认没有执行权限,需要给它添加执行权限。
 

shell> vim /etc/rc.d/rc.local
# 添加如下参数
/usr/bin/nginx

shell> chmod +x /etc/rc.d/rc.local

nginx基础配置

nginx主配置文件    /etc/nginx/nginx.conf    是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般每个区块以 一对大括号{}

1.main  位于nginx.conf 配置文件的最高层

2.main  底层可以有EVent 、HTTP层

3.HTTP  层下有允许有多个Server层,用于对不同的网站做不同的配置

4.Server   层也允许有多个Location.    

//nginx默认配置语法

user    //设置nginx服务的系统使用用户 

wofker_processes    //工作进程,配置和CPU个数保持一致

error_log    //错误日志,后面接入的是路径

pid    //nginx服务启动时的pid

//events  事件模块“”“”

events{//事件模块

worker_connections    //每个worker 进程支持最大连接数

use    //内核模型select,poll,epoll 

//非虚拟主机的配置或公共配置定义在http{}段内,server{}段外

http{

.....

//必须使用虚拟主机配置站点,每个虚拟机使用一个server{}段

‘server’{

listen    80;//监听端口,默认80

server_name    localhost;    //提供服务的域名或主机名

//控制网站访问路径

‘location’/    {

root    /usr/share/nginx/html;//存放网站路径

index    index.html    index.htm;//默认访问首页文件

}

//指定错误代码,统一定义错误面,错误代码重定向到新的Locaitone

error_page    500    502    503    504    /50x.html:

'location'=    /50x.html    {

root    html:

}

}

...

//第二个虚拟主机配置

'server'    {

...

}

一个server代表一个虚拟主机

nginx :的安装路径和配置文件

conf    nginx的配置文件

html    存放nginx的网页

logs    存放nginx的日志

sbin    存放nginx的命令

nginx   的访问日志路径:cd /usr/local/nginx/logs/

192.168.43.189 - - [22/Feb/2019:22:26:07 +0800] "GET /index.php HTTP/1.1" 200 56787 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

远程主机IP地址                  访问时间           时区      方法       资源        协议    状态码  发送字节                        referer

                                                 浏览器信息

nginx   命令解释

nginx -s reopen #重启Nginx

nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx

nginx -s stop #强制停止Nginx服务

nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)

nginx -t #检测配置文件是否有语法错误,然后退出

nginx -?,-h #打开帮助信息

nginx -v #显示版本信息并退出

nginx -V #显示版本和配置选项信息,然后退出

nginx -t #检测配置文件是否有语法错误,然后退出

nginx -T #检测配置文件是否有语法错误,转储并退出

nginx -q #在检测配置文件期间屏蔽非错误信息

nginx -p prefix #设置前缀路径(默认是:/usr/share/nginx/)

nginx -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)

nginx -g directives #设置配置文件外的全局指令

killall nginx #杀死所有nginx进程

  Nginx的静态资源

类型

种类

浏览器端渲染

HTML、CSS、JS

图片

JPEG。GIF、PNG

视频

FLV、MP4

文件

TXT     任意下载文件

nginx的优化
sendfile    on  | off 提高文件读取的优化
tcp_nopush    on | off   提高网路的传输效率 
tcp_nodelay    on  | off  在keepalive连接下,提高网路的传输“实时性”
  3.静态资源配置语法
   1).文件读取高效 sendfile
       默认  off
   2).提高网络传输效率  tcp_nopush
       默认  off
       作用:sendfile开启情况下,提高网络包的传输效率
   3).与tcp_nopush之对应的配置tcp_nodelay
       默认  on
       作用:在keepalive连接下,提高网络的传输实时性
 4.静态资源文件压缩
   Nginx将响应报文发送至客户端之前可以启用压缩功能,这能够有效的节约带宽,并提高相应至客户端的速度
   1).gzip压缩配置语法
       语法:gzip on | off;
       默认:gzip off
       位置:http,server,location,if in location
   2).gzip压缩比率配置语法
       语法:gzip_comp_level  level
       默认:gzip_comp_level  1;(1-9)
       位置:http,server,location
       作用:压缩本身比较耗费服务端性能
   3).gzip压缩协议版本
       默认:gzip_http_version 1.1;(1.0)
       位置:http,server,location
       作用:压缩使用在http哪个协议,主流版本1.1
   4).扩展压缩模块
      语法: gzip_static on | off | always;
      默认: gzip_static off;
      位置 http, server, location
      作⽤: 预读gzip功能
server {
listen 80;
server_name 192.168.56.11;
sendfile on;
access_log /var/log/nginx/static_access.log main;
location ~ .*\.(jpg|gif|png)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/json application/x-javascript app
lication/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /soft/code/images;
}
}
5. 静态资源浏览器缓存
   HTTP协议定义的缓存机制
     1).浏览器⽆缓存
        浏览器请求->⽆缓存->请求WEB服务器->请求响应->呈现
     2).浏览器有缓存
        浏览器请求->有缓存->校验过期->是否有更新->呈现
配置静态资源缓存
location ~ .*\.(js|css|html)$ {
root /soft/code/js;
expires 1h;
}
location ~ .*\.(jpg|gif|png)$ {
root /soft/code/images;
expires 7d;
}
6. 静态资源跨域访问
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
  2). http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
  3). http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
  4). http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
  5). http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
        注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
    add_header 'Access-Control-Allow-Origin' '*'; #允许来自所有的访问地址
7.静态资源防盗链
  1). 盗链指的是在⾃⼰的界⾯展示不在⾃⼰服务器上的内容,通过技术⼿段获得他⼈服务器的资源地 址,绕过别⼈资源展示页⾯,在⾃⼰页⾯向⽤户提供此内容,从⽽减轻⾃⼰服务器的负担,因为 真实的空间和流量来⾃别⼈服务器,防盗链设置思路: 区别哪些请求是⾮正常⽤户请求
   2).基于 http_refer
     语法: valid_referers none | blocked | server_names | string ...;
     位置: server, location
   防盗链:是通过location  +  rewrite实现的;
location ~* \.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|png|swf|flv|jpeg) {
            root   /web/benet;
            valid_referers none blocked  *. benet.com  benet.com;
            if  ($invalid_referer){
                rewrite  ^/  http://www.benet.com/error.gif;
            }
        }

 Nginx rewrite地址重写

1.Rewrite基本概述

rewrite 主要实现 url 地址重写, 以及重定向.

Rewrite使⽤场景

1.URL访问跳转: ⽀持开发设计, ⾯跳转, 兼容性⽀持, 展示效果

2.SEO优化: 依赖于url路径,以便⽀持搜索引擎录⼊

3.维护: 后台维护, 流量转发等

4.安全: 伪静态,

2.Rewrite配置语法

Syntax: rewrite regex replacement [flag];

Default: --

Context: server, location, if

//所有请求转发⾄/pages/maintain.html

rewrite ^(.*)$ /pages/maintain.html break;

正则表达式

正则表达式中特殊字符

\ 转义字符

rewrite index\.php$ /pages/maintain.html break;

() ⽤于匹配括号之间的内容, 通过$1,$2调⽤

if ($http_user_agent ~ Chrome){

rewrite ^/(.*) /chrome/$1 break;

}

正则表达式终端测试⼯具

[root@Nginx ~]# yum install -y pcre-tools

[root@Nginx ~]# pcretest

PCRE version 8.32 2012-11-30

re> /(\d+)\.(\d+)\.(\d+)\.(\d+)/

data> 192.168.56.11

0: 192.168.56.11

1: 192

2: 168

3: 56

4: 11

3.Rewrite标记Flag

对⽐flagbreak last

[root@Nginx ~]# vi /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name localhost;

root /soft/code;

location ~ ^/break{

rewrite ^/break /test/ break;

}

location ~ ^/last{

rewrite ^/last /test/ last;

}

location ~ /test/{

default_type application/json;

return 200 '{"status":"success"}';

}

}

测试 break

测试last

测试访问test

last break 对⽐总结:

last会新建⽴⼀个请求, 请求域名+/test

http://192.168.100.206/last  将访问路径改为 http://192.168.100.206/test

break匹配后不会进⾏匹配, 会查找对应root站点⽬录下包含/test⽬录

http://192.168.100.206/break   当发现网页存放路径下不存在test目录,则报错

对⽐flagredirect permanent

[root@nginx ~]# vi /usr/local/nginx/conf/nginx.conf

客户端分别访问:

http://192.168.100.206/dgf

http://192.168.100.206/alex

通过fiddler抓包工具抓取

上边那两个都可以跳转到http://www.alex-daun.top,区别是返回给客户端的状态码不一样

Redirect(临时跳转302)  和permanent(永久跳转301)都可以实现重定向

关闭nginx

[root@localhost ~]# nginx -s stop

测试访问http://192.168.100.206/dgf

关闭nginx服务之后,redirect的页面无法跳转

测试访问http://192.168.100.206/alex

Permanent永久性的重定向页面在关闭nginx之后,还可以继续访问

if ($http_user_agent ~* Chrome){

rewrite ^/nginx http://www.alex-daun.top/ redirect;

}

5.手机和电脑端分离

location / {

            if ( $http_user_agent ~ "(Mobile)|(MIDP)|(SAMSUNG)|(iPone)|(ZTE)|(PHILIPS)|(HAIER)|(java)|(curl)|(Android)|(LENOVO)") {

            root   html/mobile;

            }

            if ($http_user_agent ~ Firefox) {

                root /usr/local/nginx/html/firefox;

            }

            if ($http_user_agent ~ Chrome) {

                root /usr/local/nginx/html/chrome;

            }

           index  index.html index.htm;

        }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值