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服务器来说是 ...
随机推荐
- angular解决跨域问题
通过angular自身的代理转发功能 配置package.json 启动项目通过npm start启动,会自动启动代理服务npm start
- Java 之 Servlet 体系结构
Servlet 的体系结构 体系结构示意图: 1.Servlet 接口 如果直接实现这个接口,需要重写里面所有的方法,但是只需要使用 service() 方法,其他的不常用. 2.GenericSer ...
- MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
参数说明 innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,不同参数设置对磁盘IO影响不同. 参数i ...
- p4.BTC-实现
比特币是基于 transaction-based ledger.(隐私保护性很好,但是在转账中需要说明币的来源,比较麻烦) 比特币的全节点需要维护一个UTXO的数据结构(unspent transac ...
- 个性化排序算法实践(四)——GBDT+LR
本质上GBDT+LR是一种具有stacking思想的二分类器模型,所以可以用来解决二分类问题.这个方法出自于Facebook 2014年的论文 Practical Lessons from Predi ...
- spark-submit python egg 解决三方件依赖问题
假设spark里用到了purl这个三方件,https://github.com/ultrabluewolf/p.url,他还额外依赖futures这个三方件(six的话,anaconda2自带). p ...
- 【Bug档案01】Spring Boot的控制器+thymeleaf模板 -使用中出现静态资源加载路径不当的问题 -解决时间:3h
总结 - thymeleaf的模板解析规则不清楚,或者忘了; - 出现bug时,瞎调试, 没有打开NETWORK 进行查看资源的加载情况 - 控制器中的其他代码,可以先注释掉,这样就可以迅速屏蔽掉其他 ...
- 怎么给win10进行分区?
新安装的win10系统的朋友,对于win10系统分区不满意应该如何是好呢?今天给大家介绍两种win10系统分区的方法,一个是windows自带分区管理软件来操作;另一个就是简单方便的分区助手来帮助您进 ...
- laravel 依赖注入
<?php interface Animal{ public function attack(); public function talk(); } class People implemen ...
- java spring boot 导出/下载文本文件操作(包含写文本文件)
内容简介 本文主要内容为使用java把内容写入文本文件,并实现下载/导出的功能. 实现步骤 1. controller层 @ResponseBody @RequestMapping(value = & ...