Nginx总结

Nginx

What is Nginx

  • Nginx(发音:engine X)是一款由俄罗斯程序设计师Igor Sysocy开发的,基于C语言的轻量级的HTTP服务器(相比于Apache、Lighttpd而言),同时是一个高性能的HTTP和反向代理服务器。

Nginx 应用场景

  • http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  • 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

Mac下Nginx安装配置相关问题

  • mac下直接用homebrew安装,命令如下:
brew update 
brew install nginx
  • 跟Linux系统有些不同,在Mac下面Nginx默认监听了8080端口号,若要改到80端口(http协议默认端口),输入以下命令
# 下面的1.8.0请根据最新安装版本号对应修改,给nginx足够权限
sudo chown root:wheel /usr/local/Cellar/nginx/1.8.0/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.8.0/bin/nginx
# 用vi编辑器打开nginx配置文件,找到server字段的listen字段并将其值修改为80
vi /usr/local/etc/nginx/nginx.conf

Nginx配置解析

  • 默认配置文件解析:可以在终端执行 cat /usr/local/etc/nginx/nginx.conf.default 查看默认配置文件
# user字段表明了Nginx服务是由哪个用户哪个群组来负责维护进程的,默认是nobody
# 查看当前用户命令: whoami
user nobody;

# worker_processes字段表示Nginx服务占用的内核数量
# 为了充分利用服务器性能你可以直接写你本机最高内核
# 查看本机最高内核数量命令: sysctl -n hw.ncpu
worker_processes 4;

# error_log字段表示Nginx错误日志记录的位置
# 模式选择:debug/info/notice/warn/error/crit
# 上面模式从左到右记录的信息从最详细到最少
error_log  /usr/local/var/logs/nginx/error.log debug;

# Nginx执行的进程id,默认配置文件是注释了
# 如果上面worker_processes的数量大于1那Nginx就会启动多个进程
# 而发信号的时候需要知道要向哪个进程发信息,不同进程有不同的pid,所以写进文件发信号比较简单
# 你只需要手动创建,比如我下面的位置: touch /usr/local/var/run/nginx.pid
pid  /usr/local/var/run/nginx.pid;

events {
    # 每一个worker进程能并发处理的最大连接数
    # 当作为反向代理服务器,计算公式为: `worker_processes * worker_connections / 4`
    # 当作为HTTP服务器时,公式是除以2
    worker_connections  2048;
}

http {
    # 关闭错误页面的nginx版本数字,提高安全性
    server_tokens off;
    include       mime.types;
    default_type  application/octet-stream;

    # 日志记录格式,如果关闭了access_log可以注释掉这段
    #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可以让读取磁盘IO操作更快
    # 当然如果你在学习的过程中可以打开方便查看Nginx的访问日志
    access_log off;

    sendfile        on;

    # 在一个数据包里发送所有头文件,而不是一个接一个的发送
    tcp_nopush     on;

    # 不要缓存
    tcp_nodelay on;

    keepalive_timeout  65;

    gzip  on;
    client_max_body_size 10m;
    client_body_buffer_size 128k;

   include /usr/local/etc/nginx/sites-enabled/*;
}
  • Nginx配置文件结构
...
events {
    ...
}
http {
    ...
    server {
        ...
        location xxx {
            ...
        }
    }
}
  • 举例说明
server {
    # Nginx监听端口号
    listen       80;
    # 服务器的名字,默认为localhost,你也可以写成aotu.jd.com,这样子就可以通过aotu.jd.com来访问
    server_name  localhost;
    # 代码放置的根目录
    root /var/www/;
    # 编码
    charset utf-8;    

    location / {
        # index字段声明了解析的后缀名的先后顺序
        # 下面匹配到/的时候默认找找html,再找不到就找htm
        index index.html index.htm;
        # 自动索引
        autoindex on;

    }    
}

反向代理

Nginx配置反向代理

  • 如下配置,访问tomcat.taotao.com时,分别轮流的访问8080和8081两个tomcat,配置tomcat集群
upstream tomcats{
	server 192.168.25.148:8080;
	server 192.168.25.148:8081;
   }

   server {
        listen       80;
        server_name  tomcat.taotao.com;

        location / {
            proxy_pass   http://tomcats;
            index  index.html index.htm;
        }
   }

Nginx配置负载均衡

  • 如下,upstream的server后面添加一个weight即可代表权重。权重越高,分配请求的数量就越多。默认权重是1
upstream tomcats{
	server 192.168.25.148:8080 weight=2;
	server 192.168.25.148:8081;
   }

   server {
        listen       80;
        server_name  tomcat.taotao.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcats;
            index  index.html index.htm;
        }
   }

反向代理理解

  • 正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B】,在现实中的例子就是『翻墙』,通过代理服务器去访问真实想访问的,代理服务器为一堆客户做代理;目标服务器不知道真实的客户端是谁。
  • 反向代理,用户去访问的时候,不知道真正访问的是哪一台服务器,就跟打10086一样,只管拨通10086,不管那边是哪个服务人员;为服务器做代理

转载于:https://my.oschina.net/husthang/blog/852499

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值