nginx是一款轻量级的web服务器、反向代理服务器和电子邮件服务器,占有内存少,并发能力强。

本文将简单介绍如何安装、启动nginx,部署web项目,应用反向代理。

一、安装

可参考https://www.cnblogs.com/EasonJim/p/7806879.html

二、常用命令

nginx -s stop 快速关闭

nginx -s quit 等待当前请求执行完毕后关闭

nginx -s reload 重新加载配置

nginx -s reopen 重新打开日志(完成日志切割)

三、常用配置

参考https://blog.csdn.net/xyang81/article/details/51814787

  3.1http简要配置

    极简的情况下,http可以只配置server,即:

    

http {
server {}
server {}
}

    其他关于http的配置比如include(用于将外部文件的内容作为配置拷贝到配置文件中)、sendfile(是否启用内核复制)等,可参考上面提到的链接或ngnix官方文档。

  3.2server简要配置

    server的配置中比较重要的有三项:listen,server_name和location。

    listen指令配置了虚拟主机监听的ip地址和端口,默认监听本机地址和80端口。

     server_name指令配置了虚拟主机的域名。

    location指定配置了客户端请求服务器的url地址匹配规则。

    例如,以下server配置:

server {
listen 192.168.100.1:8080;
server_name test.com;
} server {
listen 192.168.100.1:8081;
server_name test.cn
} server {
listen 192.168.100.1:8081 default_server;
   server_name test.com.cn
}

    首先,nginx将根据server_name来路由请求,比如请求test.com.cn的请求将被路由到server3。

    如果没找到对应的server_name,将根据监听的端口号将请求路由到默认的server,即对应了default_server配置。如果没有显式配置,则对应端口的第一个server将作为默认server。

    例如,如果有一个来自8081端口请求了test.org的url,将会被路由到server3。如果server3没有default_server端口,则它将被路由到server2。

    3.2.1server_name

      server_name接受完整的域名、通配符和正则表达式,也可以配置ip。需要注意的是,通配符*只能出现在开头或结尾,test.*.com这样的域名是非法的。

      正则表达式遵守对应的正则表达式规则,有一个特殊的地方为,包含{}的正则表达式需要用""引用。

      配置文件中配置的完整域名和通配符域名将存储在对应的hash中,而正则表达式按顺序搜索。

      server_name的搜索顺序为:完整域名>通配符在前的域名>通配符在后的域名>正则表达式域名。为了提高效率,应该尽量使用完整域名。

      在域名过长时,nginx可能无法正确建立hash表。此时可以通过http配置中的server_names_hash_max_size进行配置。如果修改该配置依然无效,则可以考虑修改server_names_hash_bucket_size

  3.3location简要配置

    一个简单的location配置可能包含root和index配置,如下:

location / {
root html;
index index.html;
}

    /表示匹配任何请求url。此处可接受正则表达式,如~\.(gif|jpg|png)$表示匹配以.gif或.jpg或.png结尾的url。

    nginx优先匹配更精确的location块,只有当找不到匹配项时,才会匹配以/标注的location块。在按正则匹配location时,将根据在配置文件中出现的顺序匹配。

    root指令配置了根目录,此配置将会和location匹配到的url一起生成访问本地文件系统内容的地址。例如,上述配置将生成html/。

    index指令配置了默认的处理页,当请求url没有匹配任何location块时,将会被默认重定向到html/index.html。

    此外,location块还可以配置proxy。

四、部署web项目

  在nginx上部署一个web项目非常简单,参考上述配置,将root指向对应的web项目目录即可。

  4.1反向代理

    在前后端分离的项目中,可以使用nginx的反向代理功能来解决跨域问题。

    反向代理的配置也非常简单,就是location指令块中的proxy_pass指令。如下:

location ~/cityflag/ {
default_type application/json;
proxy_pass http://localhost:8080;
}

    以上配置就将对应的请求发送到了localshot:8080。

五、负载均衡

  nginx提供负载均衡功能,可以通过简单的配置将请求分发到不同的服务器上,以提高性能、可用性等。

  nginx提供三种简单的负载均衡方式,轮询、最少链接和ip_hash,其中轮询为默认方式,其余分别用least_conn;和ip_hash;来标识。

  同时还可以通过指定server的权重来对负载均衡进行调整。

  下面是一个简单的配置例子:

http{
upstream myapp {
server localhost:8383 weight=2;
server localhost:9999;
}
server {
listen 9999 default_server;
server_name myhost.com;
root html; location / {
root html;
index index.html;
} location ~/cityflag/ {
default_type application/json;
proxy_pass http://myapp;
}
}
}

  这样每三个请求中将有两个请求发送到server1,一个请求发送到server2。

Nginx初探的更多相关文章

  1. 170731、Nginx初探

    一. 概念 Nginx——Ngine X,是一款自由的.开源的.高性能HTTP服务器和反向代理服务器:也是一个IMAP.POP3.SMTP代理服务器:也就是说Nginx本身就可以托管网站(类似于Tom ...

  2. nginx 初探 之反向代理

    首先要解释的是什么叫做反向代理? 平时我们浏览网页可以输入网址直接访问,  但如果访问国外的网站,  可能就没那么简单('中国特色'),  这时候我们需要配置一个代理服务器, 然后通过此服务器中转来访 ...

  3. nginx初探,下载安装配置负载均衡

    上一篇我讲了正向代理和反向代理的概念,这个是为nginx做准备的前置技能,网上百度nginx可以知道nginx是什么: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/PO ...

  4. Nginx 初探

    Nginx简介 Nginx(engine X)是一个开源.轻量级.高性能的HTTP和反向代理服务器,可以代理HTTP. IMAP/POP3/SMTP和TCP/UDP协议:其特点是占用内存少,并发能力强 ...

  5. Nginx各个配置块功能详解

    Nginx学习笔记-入门篇 nginx初探 ginx服务器是轻量级web服务器中广受好评的一款产品,常用功能有HTTP代理与反向代理(目前已支持七层与四层代理),负载均衡,web缓存. nginx配置 ...

  6. LNMP之Nginx

    Nginx初探 概念: Nginx是一款免费.开源.高性能的HTTP服务器和反向代理,同时也可作为邮件代理服务器.其因为高性能.稳定.丰富的功能集.配置简单和低系统资源消耗而闻名. Tengine是由 ...

  7. Python和Mysql、Nginx

    链接: python入门和基础: Python 中文学习大本营 你是如何自学 Python 的? 简明 Python 教程 给伸手党的福利:Python 新手入门引导 <Python爬虫学习系列 ...

  8. 《Nginx高性能Web服务器详解》

    第1章 Nginx初探 第2章 Nginx服务器的安装部署 第3章 Nginx服务器架构初探 第4章 Nginx服务器的高级设置 第5章 Nginx服务器的Gzip压缩 第6章 Nginx服务器的Re ...

  9. web开发微信文章目录

    Web开发微信文章目录 2015-12-13 Web开发 本文是Web开发微信的文章目录.通过目录查看文章编号,回复文章编号就能查看文章全文. 回复编号查看全文,搜索分类名可以获得该分类下的文章.   ...

随机推荐

  1. StringBuffer 详解 (String系列之3)

    本章介绍StringBuffer以及它的API的详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string03.html StringBu ...

  2. 实验5 IIC通讯与AD/接DA接口

    1.利用单片机控制PCF8591的AD转换,控制AD0和AD1电位器,在数码光上显示DA转换的值. 2.利用单片机控制PCF8591的DA转换,让发光二极管D1由暗到亮变化,整个过程时间差不多2s左右 ...

  3. Mac系统登录不进系统解决办法

    1.找到买苹果电脑时附带的 Mac OS X 系统光盘,或者有苹果 Mac OS X 系统镜像的 U 盘/移动硬盘,塞入光驱(或插在 USB /火线接口上).重启苹果电脑,开机时按住“option”键 ...

  4. Page_Load是怎样被执行的

    关于Asp.Net的生命周期的文章,很多很多,不管是管道生命周期,还是页面生命周期,图文并茂的文章并不少,我就不说了,我只是在复习这些知识点的时候,想具体知道一个页面的Page_Load方法到底是怎么 ...

  5. 【BZOJ3280】 小R的烦恼(费用流,建模)

    有很浓厚的熟悉感?餐巾计划问题? 不就是多了几个医院,相当于快洗部和慢洗部开了分店. 考虑建图: 如果把每一天拆成两个点,一个表示需求,另一个表示拥有的话. 显然就是一个两边的图,考虑如果我现在有人, ...

  6. 11_python_闭包迭代器

    一.函数名(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. def func(): print("呵呵") print(func) 结果: & ...

  7. Postgres 的 deferrable

    仅 Postgres 支持 deferrable deferrable 即 推迟约束 一.定义字段时指定 定义:exam考试表里 subject_iddddd 字段关联了 subject 科目表的 i ...

  8. Liferay开发实战(1):入门

    网址: https://www.liferay.com/zh/ 文档: https://dev.liferay.com/develop 入门文章网上很多,中文的较少,存在版本太旧的问题,也缺少一步一步 ...

  9. 【并发】3、LockSupport阻塞与唤醒,相较与wait和notify

    我们可以使用wait和notify分别对象线程进行阻塞或者唤醒,但是我们也可以使用LockSupport实现一样的功能,并且在实际使用的时候,个人感觉LockSupport会更加顺手 范例1,wait ...

  10. 匿名类、包、权限修饰符_DAY10

    1:内部类(理解) (1)把类定义在一个类的内部. (2)特点:   A:内部类可以直接使用外部类的成员,包括私有.   B:外部类要使用内部类成员,必须创建对象使用.    例子: public c ...