Linux/Centos下安装与使用Nginx(1)

前一篇文章 Windows下安装与使用Nginx (1) 介绍了在windows环境下Nginx的安装与使用,因我本人对linux并不熟悉,所以先以window环境试水,花了一天的时间将linux环境下的Nginx建起来,仍旧以博客记录建置的过程,供后来者参考,也给自己留个笔记.

环境准备

使用工具

  • winscp : 在windows环境下直接连linux进行文件传送,文件夹/文件新增修改删除,大大方便了在linux上进行文件相关的操作.
  • putty : 远程连接linux,连接后在本机使用命令行远程操作即可.

Linux基础环境相关

  • gcc & g++
    1.判断是否安装了gcc&g++
# rpm -qa | grep gcc

若有出现以下三个包,则无需安装,否则需要执行2的操作安装这三个包.

这里写图片描述

2.若没有可使用putty远程连接linux服务器之后,使用yum命令在线安装,用该方式安装依赖linux服务器需有外网访问权限.
# yum -y install gcc-c++

-y为自动选择y,当有询问选择y/n时自动选择y

  • pcre

1.下载地址:https://nchc.dl.sourceforge.net/project/pcre/pcre/8.12/pcre-8.12.tar.gz

2.使用winscp上传pcre-8.12.tar.gz 到 /usr/local/src/nginx目录下

3.解压pcre-8.12.tar.gz

# cd /usr/local/src/nginx
# tar zxvf pcre-8.12.tar.gz

4.进入解压后的目录

# cd pcre-8.12

5.配置

# ./configure

6.编译

# make

7.安装

# make install
  • 修改防火墙配置开放nginx端口
    默认状态下只开放22端口供ssh连接,所以需要开放nginx使用的端口,否则其他主机无法连接.

查看端口开放状况

# vim + /etc/sysconfig/iptables

这里写图片描述

若nginx端口没有开放,修改防火墙配置,事实上,我是复制了22端口的那笔记录,修改成自己要开放的端口,修改完之后保存退出,然后重启防火墙.
# service iptables restart

Nginx

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

2.使用winscp上传nginx-1.8.1.tar.gz 到 /usr/local/src/nginx目录下

测试站点

安装Nginx

参考这位前辈的做法 http://www.cnblogs.com/kevingrace/p/5882006.html

1.添加用户nginx,用于运行nginx服务进程

# groupadd -r nginx
# useradd -r -g nginx -s /bin/false -M nginx

2.解压nginx-1.8.1.tar.gz

# cd /usr/local/src/nginx
# tar zxvf nginx-1.8.1.tar.gz

3.进入解压后的目录

# cd nginx-1.8.1

4.配置

# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre

补充:在这里我遇到了OpenSSL的异常,提示如下:

这里写图片描述

解决方式是安装OpenSSL,指令如下:

yum -y install openssl openssl-devel

5.编译

# make

6.安装

# make install

至此,nginx服务算是安装完成了,切换到nginx的安装目录,我们可以看到安装目录下有以下文件:

# cd /usr/local/nginx/
# ls

这里写图片描述

开启nginx,访问http://nginx_ip/,出现默认的页面.

# cd sbin
# ./nginx

这里写图片描述

配置Nginx负载均衡


配置文档详细说明: 参考http://www.linuxidc.com/Linux/2013-11/92594.htm

Nginx配置文件主要分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和location(URL匹配特定位置的设置).

其中,main部分设置将会影响其他所有设置,server部分的指令主要用于指定主机和端口。upstream指令主要用于负载均衡,设置一系列的后端服务器,location部分主要用于匹配网页位置。四者的关系如下:server继承main,location继承server,upstream既不继承其他设置,也不被设置所继承。

1、nginx的全局配置

下面这段代码内容是nginx全局属性的配置

user nobody; #指定nginx worker进程运行用户以及用户组,默认nobody。
worker_processes 1; #指定nginx要开启的进程数。最好与CPU个数相同。
error_log logs/error.log notice; #用来定义全局错误日志文件。级别有:debug、info、notice、warn、error和crit。debug输出日志最为详细,criti输出日志最少。
pid logs/nginx.pid; #用来指定进程id的存储文件位置。
events { #设定nginx的工作模式及连接上限。
    use epoll; #支持的工作模式有:select、poll、kqueue、epoll和rtsig.对于linux系统,epoll是首选模式。
    worker_connections 1024; #定义nginx每个进程的最大连接数。
} 

2、HTTP服务器配置
http {
    include mime.types; #实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度
    default_type application/octet-stream; #设定默认类型为二进制流
    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #指定nginx日志的输出格式,main为此日志文件输出格式的名称,可以在下面access_log指令中引用
    access_log logs/access.log main;
    sendfile on; #用于开启高效文件传输模式
    tcp_nopush on; #防止TCP阻塞
    keepalive_timeout 0; #用于设置客户端连接保持活动的超时时间,超过这个时间,服务器会关闭该连接
    keepalive_timeout 65; #同上
    gzip on; #支持压缩传输,提高传输速度
    server { #server{}第一个虚拟主机
        listen 80; #监听端口
        server_name localhost; #主机头(域名)
        charset utf-8; #web服务器的语言编码
        access_log logs/host.access.log main; #虚拟主机独立的访问日志
        location / { #匹配url地址中有"/",则执行花括号中的配置
            root html; #虚拟主机的本地目录,完整路径/opt/nginx/html也可写绝对路径
            index index.html index.htm; #默认索引的首页格式及顺序
            proxy_pass http://localhost:59637; #请求转向的地址
        }
        error_page 500 502 503 504 /50x.html; #定义错误页面
        location = /50x.html {
        root html;
        }
    }
}
3、upstream负载均衡配置
这里说明两种负载均衡模式:
(1)轮询加权,也可以不加权,就是1:1轮询
(2)ip_hash,同一ip会被分配给固定的后端服务器,当session保存在IIS进程中的时候,可使用这种方式.但当某一台后端服务器挂掉的时候,session则会丢失.
upstream myweb {
        #ip_hash #使用ip hash分配模式
        server 192.168.18.117:111 weight=1;  #站点A
        server 192.168.18.117:222 weight=2;  #站点B
    }

基于我的需求,需要达到真正的负载平衡,也就是当某一台挂掉时,原来连接到挂点服务器的使用者仍可以正常使用,所以我采用轮询的负载均衡模式,并且我需要将session独立存储(asp.net使用redis存储session),我的配置修改为:

upstream myweb {
        server 192.168.18.117:111 weight=1;  #站点A
        server 192.168.18.117:222 weight=1;  #站点B
    }

location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://myweb; #指向upstream配置
        }

最后附加nginx常用指令

# cd /usr/local/nginx/sbin  切换到nginx目录

# ./nginx -s stop 强制关闭 
# ./nginx -s quit 安全关闭 
# ./nginx -t 检查配置文件是否正确 
# ./nginx -s reload 改变配置文件后重新加载配置,不需要重启nginx 
# ./nginx -s reopen 打开日志文件

或者

# /usr/local/nginx/sbin/nginx -s stop 强制关闭 
# /usr/local/nginx/sbin/nginx -s quit 安全关闭 
# /usr/local/nginx/sbin/nginx -t 检查配置文件是否正确 
# /usr/local/nginx/sbin/nginx -s reload 改变配置文件后重新加载配置,不需要重启nginx 
# /usr/local/nginx/sbin/nginx -s reopen 打开日志文件

测试

至此,我的nginx负载平衡可以正常工作啦,当我第一次访问时,实际上访问的是站点A,第二次访问时,实际上访问的是站点B.

这里写图片描述

这里写图片描述

写在最后

这篇文章是最简单的负载均衡的配置过程,后续将加入session存储到redis,nginx缓存设置,与keepalive结合等主题,实现真正的web服务高可用.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值