What——什么是nginx

nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支撑5w并发连接。并且cup、内存等资源消耗却非常低,运行非常稳定。

Function——功能

1.http服务器。nginx是一个http服务,可以独立提供http服务。可以做网页静态服务器。

2.虚拟主机。可以实现在一台服务器中虚拟出多个网站。类似于购买的虚拟主机。

3.反向代理,负载均衡。当网站的访问量达到一定的程度后,单台服务器不能满足用户的请求时,需要多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕(dang)机而某台服务器闲置的情况。

How——如何使用

install——安装

官网下载nginx安装包(http://nginx.org/)

Linux系统安装之前需要环境
  1. 安装gcc的环境。

    yum install gcc-c++
  2. 安装PCRE。

    (Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

    yum install -y pcre pcre-devel
  3. 安装zlib。

    zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

    yum install -y zlib zlib-devel
  4. 安装openssl。

    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

    nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

    yum install -y openssl openssl-devel
安装步骤
  1. 把nginx的源码包上传到linux系统

  2. 解压缩

    tar zxf nginx-1.8.0.tar.gz

  3. 使用configure命令创建一makeFile文件。

	 	./configure \
--prefix=/usr/softwear/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

 mkdir /var/temp/nginx/client -p
  1. make
  2. make install

常用命令

进入sbin目录
启动nginx:
./nginx 关闭nginx:
./nginx -s stop
./nginx -s quit (推荐使用)
刷新配置文件:
./nginx -s reload
检查配置文件:
./nginx -t

访问nginx:

http://localhost:80

config——配置

Nginx的配置文件:
安装目录/conf/nginx.conf
  1. 通过端口区分不同虚拟机(通过配置nginx监听不同的端口,从而实现不同端口下不同的跳转)

#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
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 on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; server {
#监听80端口
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
}
}
server {
#监听81端口
listen 81;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html-81;
index index.html index.htm;
}
} }
  1. 通过配置域名区分虚拟主机

#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
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 on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
}
}
server {
listen 81;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html-81;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.pyfysf.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html-pyfysf;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.pyfysf888.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html-pyfysf888;
index index.html index.htm;
}
}
}

上述配置文件就可以实现通过配置不同的域名进行不同的跳转内容。(当前仅仅是静态资源访问)

通过浏览器访问:http://www.pyfysf.comhttp://www.pyfysf888.com 两个域名同时绑定到一个ip地址(本地测试可以通过修改host文件)

反向代理

  1. 正向代理

  1. 反向代理

反向代理服务器决定哪台服务器提供服务。

返回代理服务器不提供服务器。也是请求的转发。

upstream tomcat1 {
server 192.168.25.148:8080;
}
server {
listen 80;
server_name www.pyfysf.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.25.148:8081;
}
server {
listen 80;
server_name www.pyfysf888.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}

如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

 upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082;
}

可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

 upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082 weight=2;
}

初识nginx!的更多相关文章

  1. 初识nginx——内存池篇

    初识nginx——内存池篇 为了自身使用的方便,Nginx封装了很多有用的数据结构,比如ngx_str_t ,ngx_array_t, ngx_pool_t 等等,对于内存池,nginx设计的十分精炼 ...

  2. 初识Nginx及编译安装Nginx

    初识Nginx及编译安装Nginx 环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...

  3. 初识nginx之第一个demo

    商城项目做了一个多月了,想到必须用到负载均衡,简单了解了一下nginx,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.ba ...

  4. 初识nginx

    先来一波官方站点关于nginx介绍.nginx相关历史这里不再赘述啦.   nginx 是免费,开源,高性能 HTTP 服务器和反向代理服务器,也可作为IMAP/POP3代理服务器.nginx以它的高 ...

  5. nginx(四)初识nginx日志文件

    nginx 日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,通俗的理解就是先用log_format来定 ...

  6. 初识nginx+tomcat

    百度百科说: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯 ...

  7. nginx(一)初识nginx

    什么是nginx?Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. Nginx应用场景(都很常用): 1:http服务器.N ...

  8. 初识 Nginx

    Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.很多高知名度的网站 ...

  9. 初识nginx反向代理和缓存机制

    实现的需求图:   环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...

  10. [web][nginx] 初识nginx -- 使用nginx搭建https DPI解码测试环境

    环境 CentOS 7 X86 文档: https://nginx.org/en/docs/ 安装: [root@dpdk ~]# cat /etc/yum.repos.d/nginx.repo [n ...

随机推荐

  1. fprintf函数将格式打印到文件,非常好用(怎么没早点发现这个函数)

    /* fprintf example */ #include <stdio.h> int main () { FILE * pFile; int n; ]; pFile = fopen ( ...

  2. c# 计算字符串和文件的MD5值的方法

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  3. BI-学习之 商业智能项目工具安装

    首先咱们先需要下载一个工具,Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012并安装: 我目前 ...

  4. Java基础(一) 八大基本数据类型

    自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean. 其中: 整型:byte, ...

  5. SYN5307型数字式电秒表

    SYN5307型数字式电秒表 产品概述 SYN5307型数字式电秒表是由西安同步电子科技有限公司精心设计生产的一款多功能,高精度电秒表.该仪器采用高精度石英晶振作为测量基准,测量准确度高于一般的电秒表 ...

  6. wince kill 进程

    http://www.cnblogs.com/fujinliang/archive/2012/09/13/2684165.html 原文地址 http://www.2cto.com/kf/201504 ...

  7. spring_three

    转账案例 坐标: ; } } 创建增强类Logger.java /** * 用于记录日志的工具类,它里面提供了公共的代码 */ @Component("logger") @Aspe ...

  8. 【Mac】Mac快捷键与Mac下的Idea快捷键

             本人之前一直在windows平台下进行开发,刚接触Mac的时候有些许的不适应,无论是无鼠标操作,还是文件系统的变更,以及键盘格式以及系统快捷键的变更,都曾对自己造成过一定程度的困扰. ...

  9. raft算法解析

    一.raft算法引入 在寻找一种易于理解的一致性算法的研究(In Search of an Understandable Consensus Algorithm-extended version) 论 ...

  10. Visual Studio模板代码注释小技巧分享

    在日常开发过程中,难免有这样一种需求:就是你所建的每一个类文件或者接口文件都需要标注下作者姓名以及类的用途.如果我们每次创建文件的时候都需要写一遍这些信息是很烦神的.还好Visual Studio给我 ...