Nginx介绍和使用
Nginx介绍和使用
一、介绍
Nginx是一个十分轻量级并且高性能HTTP和反向代理服务器,同样也是一个IMAP/POP3/SMTP代理服务器。
二、特性
- HTTP服务器
- 反向代理服务器
- 简单的负载均衡和容错
- 支持热部署
三、nginx模块
nginx模块一般分为三类:
- handler:负责处理客户端请求并产生待响应内容。
- filter:负责对输出的内容进行处理,可以对输出进行修改。
- upstream:实现反向代理功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
四、ubuntu安装nginx
sudo apt-get install nginx
这种方式安装的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx新建服务脚本,然后就可以使用sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}的命令启动。
可以再/var/log/nginx/下查看日志,如果端口80被占用,就更改/etc/nginx/sites-enabled/default文件,将下面的两个80改成你想要的的端口,然后重新启动。
19
20 server {
21 listen 80 default_server;
22 listen [::]:80 default_server ipv6only=on;
五、配置nginx作为http服务器
1. 配置项目的conf文件
在/etc/nginx/nginx.conf中可以看到自定义配置文件的路径:
71 include /etc/nginx/conf.d/*.conf;
72 include /etc/nginx/sites-enabled/*;
73 }
在conf.d目录下新建文件timeline.conf,写入配置内容
# HTTP Server
server {
listen 8080;
server_name bonnenuit.vip www.bonnenuit.vip;
location / {
alias /home/wangjun/tomcat8/webapps/timeline/pages/;
index index.html;
}
}
重启nginxsudo service nginx restart
2. 通过浏览器访问
http://bonnenuit.vip:8080/ 如果显示正常,则说明配置成功。
3. 遇到的问题
1. 报错"server" directive is not allowed here in /etc/nginx/myconf/timeline.conf:3
出现这个错误的原因是include /etc/nginx/xxx/*.conf;没有写在http标签下,因为server只能出现在http下面。
2. 访问url的时候报错403 forbidden
查询/var/log/nginx/error.log,具体的报错日志为:
2019/07/03 10:21:25 [error] 1523#0: *1 open() "/home/wangjun/tomcat8/webapps/timeline/pages/timeline/pages/index.html" failed (13: Permission denied), client: 106.39.75.134, server: bonnenuit.vip, request: "GET /timeline/pages/index.html HTTP/1.1", host: "bonnenuit.vip:8080"
出现这个原因是因为nginx的worker进程无法访问静态资源文件,因为worker进程的用户和资源的所有者是不一样的,我们需要更改配置文件nginx.conf:
# user 用户 用户组
user wangjun wangjun;
然后重启nginx就可以解决。
六、配置nginx作为反向代理服务器
1. 配置conf文件
在conf.d目录下timeline.conf中,新增配置内容:
# HTTP Server
# 反向代理服务器+负载均衡
upstream test_reverse_proxy {
server 120.25.245.241:8080 weight=1 max_fails=2 fail_timeout=10s;
server 120.25.245.241:8080 weight=1 max_fails=2 fail_timeout=10s; #两台机器可以做负载均衡,目前只有一台机器,因此ip:port一样,一台模拟两台
keepalive 16;
}
server {
listen 8080;
server_name bonnenuit.vip www.bonnenuit.vip; #server_name是为了区别多个server时,匹配域名来决定进入哪个server,当都不匹配时,进入配置的第一个server
location / {
alias /home/wangjun/tomcat8/webapps/timeline/pages/;
index index.html;
}
location ^~ /proxy/ {
proxy_set_header Host $host;
proxy_pass http://test_reverse_proxy/;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_redirect off;
proxy_intercept_errors on;
client_max_body_size 10m;
}
}
2. 通过浏览器访问
http://bonnenuit.vip:8080/proxy/ 如果显示正常,则说明配置成功。
七、location匹配url规则
看下location的语法:
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
location 后面跟可选的修饰符,后面就是要匹配的字符,花括号是对应的配置。
修饰符含义:
| = | 表示精确匹配,只有请求的url路径与后面的字符串完全相等时,才会命中。 |
|---|---|
| ~ | 表示该规则是使用正则定义的,区分大小写 |
| ~* | 表示该规则是使用正则定义的,不区分大小写 |
| ^~ | 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找 |
具体的匹配过程如下:
首先先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。
如果找到了精确匹配的location,也就是使用了
=修饰符的location,结束查找,使用它的配置。然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置。
如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。
基于以上的匹配过程,我们可以得到以下两点启示:
- 使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
- 使用精确匹配可以提高查找的速度。例如经常请求
/的话,可以使用=来定义location。
参考:
https://www.cnblogs.com/EasonJim/p/7806879.html
Nginx介绍和使用的更多相关文章
- Nginx 介绍和安装
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- LNMP架构介绍、MySQL和PHP安装、Nginx介绍
6月6日任务 12.1 LNMP架构介绍12.2 MySQL安装12.3/12.4 PHP安装12.5 Nginx介绍 扩展Nginx为什么比Apache Httpd高效:原理篇 http://w ...
- nginx介绍及相关实验
一.nginx介绍 1.nginx简介 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP 服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 R ...
- Linux centosVMware LNMP架构介绍、MySQL安装、PHP安装、Nginx介绍
一. LNMP架构介绍 和LAMP不同的是,提供web服务的是Nginx 并且php是作为一个独立服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求,动态请求会转发给php-fpm ...
- 三十六、www服务nginx介绍
一.Nginx介绍 ,相对于LAMP经典组合而言,LNMP是近几年来流行的组合.(linux+nginx+mysql+php) Nginx是一个开源www服务软件,是俄罗斯人开发的,本身是一款静态ww ...
- nginx介绍及其原理
nginx介绍及其原理 nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行. nginx由俄罗斯程序设计师lgor Sy ...
- Nginx介绍,安装,配置
引言 为什么要学习Nginx 问题一: 客户端到底要将请求发送给哪台服务器? 问题二: 如果所有客户端的请求都发送给了服务器1,那另一台岂不是废了 问题三: 客户端发送的请求可能是申请动态资源的,也可 ...
- Nginx介绍
原文:http://www.aosabook.org/en/nginx.html 作者: Andrew Alexeev nginx(发音"engine x")是俄罗斯软件工程师Ig ...
- nginx介绍(三) 配置篇
3. nginx配置 nginx配置系统受益于Igor Sysoev(nginx创始人)在Apache(阿帕奇软件基金会)的经历.Igor Sysoev洞察出可扩展的配置系统对于一个web服务器来说是 ...
随机推荐
- [LeetCode] 63. 不同路径 II ☆☆☆(动态规划)
描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在 ...
- Entity framework 生成的SQL如何设置兼容低版本的数据(转载)
来源:https://q.cnblogs.com/q/84401/ 右键 edmx 文件,有xml方式打开. 将ProviderManifestToken 改为 2008 .
- MySQL中使用函数时,与后面括号不能之间不能根空格
修改前代码: select MAX (article_order) from mall_school_article where 1=1 and is_deleted = 0 and status = ...
- Scrapy 概览笔记
本项目代码可参考 imzhizi/myspider: a scrapy demo with elasticsearch 虚拟环境的创建 建议爬虫项目都创建虚拟环境 虚拟环境在 Python 项目中真的 ...
- redis实现的简单令牌桶
这里给出的令牌桶是以redis单节点或者集群为中间件. 不过, 这里的实现比较简单, 主要提供两个函数, 一个用于消费令牌, 一个用于添加令牌. 这里, 消费令牌和添加令牌都是通过lua来保证原子性. ...
- Android笔记(四十三) Android中的数据存储——SQLite(五)delete
SQLite通过delete()方法删除数据 delete()方法参数说明: delete()方法参数 对应sql部分 描述 table delte from table_name 要删除的表 whe ...
- IDEA中看Flink 1.9源码时报Sources not found for: org.apache.flink:flink-shaded-hadoop-2:2.4.1-7.0
1.场景 在阅读Flink 1.9源码时,个别类如YarnClientImpl.java只能查看.class文件,想查看对应的.java source文件,点击Download source时,报So ...
- 使用Cloudera Manager搭建YARN集群及YARN HA
使用Cloudera Manager搭建YARN集群及YARN HA 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建YARN集群 1& ...
- 十大排序代码实现(python)
目录 冒泡排序 快速排序 简单插入排序 希尔排序 简单选择排序 堆排序 二路归并排序 多路归并排序 计数排序 桶排序 基数排序 写在前面: 参考文章:十大经典排序算法 本文的逻辑顺序基于从第一篇参考博 ...
- Django之路——3 Django的路由层
django不得不说是个很强大的框架,当前端给了我们一堆网页的时候,我们在考虑怎么去让这些页面与调用视图的函数配对的时候,而django则给我们提供了强大路由分发功能,让我们不在花时间浪费在这些事情上 ...