Nginx初学

转载自:https://blog.csdn.net/dutsoft/article/details/55003116

Nginx简介

Nginx是一个轻量级的、高性能的WebServer,主要可以干下面两件事:作为http服务器(和apache的功能一样);作为反向代理服务器实现负载均衡。

安装Nginx

Mac上执行:

brew install nginx
 
 
  • 1

Ubuntu上执行:

sudo apt-get install nginx 
 
 
  • 1

Nginx基本操作

1) 启动Nginx:start nginx
2) 停止Nginx:nginx -s stop
3) 修改配置后重启:nginx -s reload
 
 
  • 1
  • 2
  • 3

关于代理

正向代理

正向代理,作为一个媒介将互联网上获取的资源返回给相关联的客户端。代理和客户端在一个局域网,对于服务端是透明的

反向代理

反向代理,根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。代理和服务器在一个局域网,对客户端是透明的。

反向代理的作用

  • 提高动态语言的I/O处理能力,Python、PHP、Java这样的动态服务的I/O处理能力不高,反向代理可以缓冲请求,交给后端一个完整的HTTP请求,同样,Nginx也可以缓冲响应,也达到了减轻后端的压力。
  • 加密和SSL加速。
  • 安全。它保护和隐藏了原始资源服务器,还可以用作应用防火墙防御一些网络攻击,比如DDoS。
  • 负载均衡。它帮应用服务器分配请求,以达到资源使用率最佳、吞吐率最大、响应时间最小的目的。
  • 缓存静态内容。代理缓存通常可以满足相当数量的网站请求,大大降低应用服务器上的负载。
  • 支持压缩。通过压缩优化可以提高网站访问速度,还能大大减少带宽的消耗。

在生产环境中,通常会在多个服务器启动多个tornado进程实例,使用Nginx在前端作为反向代理服务器来分发web请求,同时负载均衡。

反向代理实例

tornado服务的demo

# coding: utf-8
import tornado.ioloop
import tornado.web
from multiprocessing import Pool
import sys
import os


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world! PID: %s" % os.getpid())

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    def run(port):
        print 'Start Process on port: %s' % port
        sys.stdout.flush()
        application.listen(port)
        tornado.ioloop.IOLoop.instance().start()

    pool = Pool(3)
    pool.map(run, [8001, 8002, 8003])
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

tornado会启动三个进程,分别侦听8001, 8002, 8003三个端口。

调整Nginx配置

负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务的问题。
Nginx负载均衡是通过upstream模块来实现的,内置实现了多种负载策略。Mac上Nginx的配置文件位于/usr/local/etc/nginx,用vim打开进行编辑。

负载均衡配置

upstream tornado.server {
   server 127.0.0.1:8001;
   server 127.0.0.1:8002;
   server 127.0.0.1:8003;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

upstream指令主要用于负载均衡,设置一系列的后端服务器。nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。此外还有ip_hash、weight、url_hash、fair等负载均衡策略。
upstream命名和服务器地址根据实际情况修改。我这里是本地起的三个tornado服务,所以server IP地址都配的是127.0.0.1,默认轮询的负载均衡。

反向代理配置

location / {
       proxy_pass_header Server;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Scheme $scheme;
       proxy_pass http://tornado.server;
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

location部分用于匹配反向代理的网页位置。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

完整配置示例


worker_processes  1;

events {
    worker_connections  1024;
    use kqueue;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 负载均衡配置
    upstream tornado.server {
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
    }

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # 反向代理配置
        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://tornado.server;
        }
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

代理地址根据实际情况修改,其他缺省配置项采用默认值就可以。

重新加载nginx.conf

如果已经启动了Nginx,执行sudo nginx -s reload重新加载配置。

访问结果

直接在浏览器中访问http://127.0.0.1/,就可以访问demo应用了。每次刷新都返回了Hello, world! PID:18854,后面跟的pid是交替出现,说明负载均衡生效了。

附录: Windows下Nginx的启动、停止等命令

在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。
1、启动:

C:\server\nginx-1.0.2>start nginx

C:\server\nginx-1.0.2>nginx.exe

注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。

2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

C:\server\nginx-1.0.2>nginx.exe -s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3、重新载入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

当配置信息修改,需要重新载入这些配置时使用此命令。

4、重新打开日志文件:

C:\server\nginx-1.0.2>nginx.exe -s reopen

5、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v

推荐修改本地hosts的插件

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值