peace唠叨

nginx的安装与使用

趁最近还没准备毕业论文的间隙,简单开启下微服务教程,希望能给大家带来帮助。本文是负载均衡部分使用第一篇,简单介绍下nginx的使用,以及nginx的反向代理,静态优化,负载均衡简单介绍.

全部代码下载:Github链接:github链接,点击惊喜;写文章不易,欢迎大家采我的文章,以及给出有用的评论,当然大家也可以关注一下我的github;多谢;

1.安装

简要介绍直接安装和编译安装

1.1直接apt-get安装

apt-get install nginx```
1
 ubuntu安装Nginx之后的文件结构大致为:

1. 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下

2. 启动程序文件在/usr/sbin/nginx

3. 日志放在了/var/log/nginx中,分别是access.log和error.log

4. 并已经在/etc/init.d/下创建了启动脚本nginx

5. 默认的虚拟主机的目录设置在了/usr/share/nginx/www

###1.2源代码安装

1.下载地址:http://nginx.org/download/

$./configure –prefix=/usr/nginx-1.8.0

$make

$make install

1
2
3
4

源码编译安装可能需要安装相关的依赖.

###1.3测试安装成功否
  1. 在线安装的启动

    $sudo /etc/init.d/nginx start

  2. 编译安装的启动

安装路径:如

/usr/nginx-1.8.0/sbin/nginx

1
2
3
4

然后就可以访问了,http://localhost/ ,会显示nginx主页面
##2.配置文件简介
nginx.conf配置文件用配置nginx的功能,下面简单介绍下该文件各字段的含义

================================以下是全局配置项

指定运行nginx的用户和用户组,默认情况下该选项关闭(关闭的情况就是nobody)

user nobody nobody;

运行nginx的进程数量,后文详细讲解

worker_processes 1;

nginx运行错误的日志存放位置。当然您还可以指定错误级别

error_log logs/error.log;

error_log logs/error.log notice;

error_log logs/error.log info;

指定主进程id文件的存放位置,虽然worker_processes != 1的情况下,会有很多进程,管理进程只有一个

pid logs/nginx.pid;

events {

#每一个进程可同时建立的连接数量,后问详细讲解
worker_connections  1024;
#连接规则,可以采用[kqueue rtsig epoll select poll eventport ],后文详细讲解
use   epoll;

}

================================以上是全局配置项

http {

#================================以下是Nginx后端服务配置项
upstream backendserver1 {
    #nginx向后端服务器分配请求任务的方式,默认为轮询;如果指定了ip_hash,就是hash算法(上文介绍的算法内容)
    #ip_hash    
    #后端服务器 ip:port ,如果有多个服务节点,这里就配置多个
    server 192.168.220.131:8080; 
    server 192.168.220.132:8080;    
    #backup表示,这个是一个备份节点,只有当所有节点失效后,nginx才会往这个节点分配请求任务
    #server 192.168.220.133:8080 backup;        
    #weight,固定权重,还记得我们上文提到的加权轮询方式吧。
    #server 192.168.220.134:8080 weight=100;    
}
#================================以上是Nginx后端服务配置项

#=================================================以下是 http 协议主配置
#安装nginx后,在conf目录下除了nginx.conf主配置文件以外,有很多模板配置文件,这里就是导入这些模板文件
include       mime.types;
#HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式
default_type  application/octet-stream;
#日志格式
#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  logs/access.log  main;

#sendfile 规则开启
sendfile        on;
#指定一个连接的等待时间(单位秒),如果超过等待时间,连接就会断掉。注意一定要设置,否则高并发情况下会产生性能问题。
keepalive_timeout  65;

#开启数据压缩,后文详细介绍
gzip  on;
#=================================================以上是 http 协议主配置

#=================================================以下是一个服务实例的配置
server {
    #这个代理实例的监听端口
    listen       80;
    #server_name 取个唯一的实例名都要想半天?
    server_name  localhost; 
    #文字格式
    charset utf-8;  
    #access_log  logs/host.access.log  main;    

    #location将按照规则分流满足条件的URL。"location /"您可以理解为“默认分流位置”。
    location / {
        #root目录,这个html表示nginx主安装目录下的“html”目录。
        root   html;   
        #目录中的默认展示页面
        index  index.html index.htm;        
    }

    #location支持正则表达式,“~” 表示匹配正则表达式。
    location ~ ^/business/ {   
        #反向代理。后文详细讲解。
        proxy_pass http://backendserver1;   
    }

    #redirect server error pages to the static page /50x.html
    #error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
#=================================================以上是一个服务实例的配置

}

1
2
###2.2配置文件正确性判断
当我们修改配置文件后,假如启动时报错.很有可能就是配置文件有问题.可以通过一下命令进行检测

正确性检查:nginx -t -c /etc/nginx/nginx.conf

1
2
3
4
5
6
7

##3.nginx的一些功能
需求:
下载安装两个Tomcat,并修改端口为80808081
[Tomcat安装与使用](http://blog.wpeace.cn/2015/10/07/Tomcat%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8/)
###3.1.简单的反向代理
Tomcat和nginx进行简单整合,反向代理http://localhost到 http://localhost:8080;

修改nginx.conf,在http{}中添加如下代码

server {
listen 80;
server_name localhost;
location /
{
proxy_pass http://localhost:8080;
}
}

1
2
3
4
5
启动Tomcat和nginx
在浏览器中输入localhost会直接显示tomcat的主页面;
###3.2.静态文件服务
静态文件服务其实还是利用了location的功能,将特定正则的URL跳转到静态页面;
如果我们需要用nginx来进行静态文件服务,一般都会把所有静态文件,html,htm,js,css等都放在同一个文件夹下;

配置Nginx动静分离,不建议这样使用

location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /data/www;

expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力

expires 3d;
}

建议使用静态文件夹的方式

location ^~ /static/ {
root /webroot/static/;
}

1
2
3
4
5
###3.3.负载均衡
nginx负载均衡的一个重要含义就是让一个服务由多个服务器提供.
nginx通过upstream可以实现,在upstream中定义相应的服务器,并在http的server中反向代理定义的负载均衡模块名.
即可实现简单的负载均衡.
来自伊豚wpeace(blog.wpeace.cn)

upstream local_host {
ip_hash;

weigth参数表示权值,权值越高被分配到的几率越大 此去可以填ip名.

server localhost:8080 weight=1;
server localhost:8081 weight=5;

}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://local_host;
proxy_set_header X-Real-IP $remote_addr;
}
```
同时启动两个tomcat,和nginx.在浏览器中输入localhost重复几次输入,可以看到两个tomcat的主页都被访问到了.
好的本章介绍到这里 来自伊豚wpeace(blog.wpeace.cn)

Peace wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!