一、nginx的基本功能

基本Http服务,可以作为Http代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL

高级Http服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等

邮件代理服务器,支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能

二、nginx的具体应用

1、nginx的虚拟主机:经过对nginx配置文件的配置,生成虚拟主机;实现不同的域名访问不同的页面

虚拟主机技术:主要应用与http服务;将一台服务器的某项或多个服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而可以充分利用服务器的硬件资源。具体配置如下

1)修改nginx配置文件

server {
        listen       80;
        server_name  www.xniu.com;
        location / {
               root   /www1;
               index  index.html;
        }
server {
        listen 80;
        server_name  www.linux.org;

location /{
                root /www2;
                index index.html;
        }
    }
2)在根目录下建立www1和www2目录,并编辑index.html默认发布文件。并启动nginx服务

3)在物理机中做解析。

--->  vim  /etc/hosts

server6  www.xniu.com  www.linux.org

4)在真机中测试结果如下:

2、nginx实现https加密

1)编辑nginx配置文件

# HTTPS  server

server {

listen       443 ssl;
        server_name  www.xniu.com;

ssl_certificate      cert.pem;    # 把认证的钥匙和密码设置相同
        ssl_certificate_key  cert.pem;

ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

location / {
            root   /www1;
            index  index.html index.htm;
        }
    }

--->  /usr/local/lnmp/nginx/sbin/nginx  -t    # 没有认证的锁和钥匙

2)生成锁和钥匙

--->  cd  /etc/pki/tls/certs

--->  make cert.pem           # 基本信息自己填写

--->  mv cert.pem  /usr/local/lnmp/nginx/conf/
3)重新加载nginx配置文件,就ok了。

4)在浏览器中进行测试

3、 重定向

3-1、将www.xniu.com和xniu.com重定向到https://www.xniu.com。nginx配置如下:(重定向到443)

server {
        listen       80;
        server_name  www.xniu.com  xniu.com;
        rewrite  ^/(.*)$ https://www.xniu.com/$1 permanent;       # 使用通配符表示。permanent表永久生效

# $1表示,www.xniu.com/news会访问到https://www.xniu.com/news/index.html目录

# location / {          # 由于进行域名的重定向,则它发布目录就可以注释另外

#     root   /www1;
        #     index  index.html;
        # }

3-2、将www.xniu.com重定向到bbs.xniu.com;即重定向到其他访问目录 。配置如下:

server {
        listen       80;
        server_name  www.xniu.com  xniu.com;
        rewrite ^/bbs$  http://bbs.xniu.com;    # 当访问www.xniu.com/bbs的时候,会重定向到bbs.xniu.com的默认发布目录

        # 当重定向有条件的时候,就要把自己的发布目录也添加进去(当条件不满足时执行)

location / {

root   /www1;
               index  index.html;
        }
    }

# 添加bbs.xniu.com的服务
server {              

listen  80;
        server_name  bbs.xniu.com;

location /{
                root  /bbs;
                index  index.html;
        }
在物理机中添加解析:  172.25.2.6  bbs.xniu.com;并在server6中创建bbs.xniu.com对应的发布目录和文件。最终结果为:

3-3、将www.xniu.com/bbs/index.html 重定向到 bbs.xniu.com/index.html

server {
        listen       80;
        server_name  www.xniu.com  xniu.com;
        rewrite ^/bbs$  http://bbs.xniu.com;              # 当以bbs结尾时,重定向到http://bbs.xniu.com
        rewrite ^/bbs/(.*)$  http://bbs.xniu.com/$1;      # 当为www.xniu.com/bbs/index.html会重定向到对应的index.html

location / {

root   /www1;
               index  index.html;
        }
}

3-4、反向重定向:当访问bbs.xniu.com的时候,重定向到https://www.xniu.com/bbs

server {
        listen       80;
        server_name  www.xniu.com  xniu.com;
        #rewrite ^/bbs$  http://bbs.xniu.com;
        #rewrite ^/bbs/(.*)$  http://bbs.xniu.com/$1;
        #rewrite  ^/(.*)$ https://bbs.xniu.com/$1 permanent;

location / {
            root   /www1;
            index  index.html;
        }
server {
        listen  80;
        server_name  bbs.xniu.com;
        rewrite ^/(.*)$ https://www.xniu.com/bbs/$1;         # 访问bbs.xniu.com转到https://www.xniu.com/bbs下
        location /{
                root  /bbs;
                index  index.html;
        }
    }

4、限制客户的访问并发量和下载速率

1)限制客户端的并发数

#gzip  on;
  limit_conn_zone   $binary_remote_addr  zone=addr:10m; 
  location  /download/ {   # 在该目录下存放访问的图片
            limit_conn  addr  1;        #设置并发量为1
  }
#在html目录下建立download目录,并放置一张图片用来访问(注意图片的权限)。然后在物理机中模拟客户端的并发请求,结果如下:

--->  ab -c1 -n 10 http://www.xniu.com/download/test.jpg   # 发送10个请求,并发为1。(此时所有请求均正常接收)

# 在nginx的日志中查看访问记录。我们可以看到访问都是正常的,返回值为200.

--->  tail -n 10 /usr/local/lnmp/nginx/logs/access.log

172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3

如果并发量为大与1的时候,就会有1个错误请求。我们可以在日志在查看到十个请求只有一个被正常响应了。

--->  ab -c10 -n 10 http://www.xniu.com/download/test.jpg

# 查看日志接收的情况:

--->  tail -n 10 /usr/local/lnmp/nginx/logs/access.log

172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"

2)限制客户端下载速率为50kb

#gzip  on;

访问禁止情况:

2)允许特定网段的主机访问

location / {
        allow  172.25.2.0/24;             # 允许172.25.2.0网段访问
        deny   all;
        root   /www1;
        index  index.html;
  }

# 此时172.25.2.1主机就可以访问了

3)当所有主机访问默认页面时,设置为500报错或进行重定向

server {
        listen       80;
        server_name  _;

return 500;      # 当其他主机访问,返回500错误

# rewrite ^(.*) http://www.westos.org permanent;   # 重定向到其他站点

6、nginx中的乱码问题。(默认是不能识别汉语)

server {
        listen       80;
        server_name  localhost;
        charset utf-8;   # 添加字符编码的格式: utf-8;

7、去掉没必要的日志

access_log   off;

8、防盗链机制:在其他主机上访问server6中的文件

# 在一台含有apache的主机的默认发布目录下,添加如下内容

<html>
<body>
<img src="http://172.25.2.6/download/test.jpg">     # 通过server1访问server6中的图片
</body>
</html>      

# 在server6中nginx的配置文件添加防盗链的访问权限

location ~ .*\.(gif|jpg|png)$ {            # 格式为gif、jpg、png的访问的设定
            expires  30d;   # 图片缓存时间是30d
            valid_referers none  blocked www.xniu.com; 
            if ($invalid_referer) {     # 表示除了www.xniu.com,其他访问均为403
                    return 403;
            }
    }

# 此时403在页面为图片的时候不会有提示;我们可以将显示页面进行重定向(实现人机交互),编辑ngxin配置文件:

location ~ .*\.(gif|jpg|png)$ {
        expires  30d;   # 图片缓存时间是30d
        valid_referers none  blocked www.xniu.com;
        if ($invalid_referer) {
                #return 403;
                rewrite ^/ http://bbs.xniu.com/daolian.jpg; # 重定向到daolian.jpg
            }
     }
server {
        listen  80;
        server_name  bbs.xniu.com;
        #rewrite ^/(.*)$ https://www.xniu.com/bbs/$1;
        location /{
                root  /www2;       # 把防盗链图片放在/www2的目录下
                index  index.html;
        }
    }

nginx详细应用的更多相关文章

  1. CentOS7离线安装Nginx(详细安装过程)

    CentOS7离线安装Nginx(详细安装过程) 1.安装gcc.g++ 下载好所需的文件后上传至服务器(下载地址:https://download.csdn.net/download/a729360 ...

  2. Nginx详细安装部署教程

    一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...

  3. nginx 详细配置

    Nginx全局变量 Nginx中有很多的全局变量,可以通过$变量名来使用.下面列举一些常用的全局变量: 变量 说明 boxClass 需要执行动画的元素的 变量 说明 $args 请求中的参数,如ww ...

  4. Ubuntu下安装Nginx详细步骤

    Nginx安装之前需要三个支持: 模块依赖性 ①gzip 模块需要 zlib 库 ②rewrite 模块需要 pcre 库 ③ssl 功能需要 openssl 库 预先编译好的包: sudo apt- ...

  5. Nginx 详细安装部署教程

    一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...

  6. wordpress nginx详细环境配置安装命令和相关问题解决

    很详细的有关WordPress和nginx的环境配置安装操作步骤 指南,适合新手一步步按照命令操作安装WordPress并运行在生产环境中. 操作步骤转载自: Heap Stack blog(ping ...

  7. Nginx详细安装部署教程(转)

    一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...

  8. spring4+websocket+nginx详细配置

    实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...

  9. Linux下安装Nginx详细图解教程

    什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...

  10. Nginx详细配置

    #运行用户#user  nobody; #启动进程,通常设置成和cpu的数量相等或者2倍于cpu的个数(具体结合cpu和内存).默认为1worker_processes  1; #全局的错误日志和日志 ...

随机推荐

  1. centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标前所有字符 Ctrl+r 搜索命 hash命令 Ctrl+左箭头/右箭头 cd命令 第三节课

    centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标 ...

  2. java构建树用的Node

    package org.ccnt.med.body; import java.util.ArrayList; import java.util.List; public class Node { // ...

  3. cocos代码研究(16)Widget子类RadioButton学习笔记

    理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...

  4. (转)关于EntityFramework中连接字符串的说明

    1. 基本格式 <connectionStrings> <add name="MyEntities" connectionString="metadat ...

  5. 【深入理解JVM】:类加载器与双亲委派模型

    类加载器 加载类的开放性 类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因.在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字 ...

  6. 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)

    Problem A. Mischievous Problem Setter 签到. #include <bits/stdc++.h> using namespace std; #defin ...

  7. jQuery源码分析--Event模块(1)

    jQuery的Event模块提供了强大的功能:事件代理,自定义事件,自定义数据等.今天记录一下它实现的原理. 我们都知道,在js的原生事件中,有事件对象和回调函数这两样东西.但是事件对象是只读的,所以 ...

  8. Ubuntu16.04安装wireshark

    Wireshark是一个非常强大的抓包工具,适用于各种场合,安装配置也简单.这里仅对在Ubuntu上的安装做介绍. 首先通过apt安装WireShark: $ sudo apt-add-reposit ...

  9. Python安装安装.whl包(安装pylint)

    Python安装安装.whl包(安装pylint) Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. 1,,下载.whl ...

  10. 【大型web架构】一个大型web系统架构设计和技术选型的讨论摘录

    1.数据库压力问题 所有的压力最终都会反映到数据库方面,一定要对数据库有一个整体的规划. 可以按照业务.区域等等特性对数据库进行配置,可以考虑分库.使用rac.分区.分表等等策略,确保数据库能正常的进 ...