资讯专栏INFORMATION COLUMN

Nginx介绍和使用

UsherChen / 2419人阅读

摘要:介绍和使用一介绍是一个十分轻量级并且高性能和反向代理服务器,同样也是一个代理服务器。如果没有匹配的正则,则使用前面记录的最长匹配前缀字符。使用精确匹配可以提高查找的速度。例如经常请求的话,可以使用来定义。

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/Eason...

https://www.w3cschool.cn/ngin...

https://segmentfault.com/a/11...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40504.html

相关文章

  • Nginx

    摘要:此外,其也能够提供强大的反向代理功能。是由为俄罗斯访问量第二的站点开发的,第一个公开版本发布于年月日。 keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(启用网卡二并使用桥接模式):A服务器:192.168.0.103 主B服务器:192.168.0.104 主(备) 前端工程师学习 Nginx ...

    syoya 评论0 收藏0
  • 基于Linux环境搭建Nginx+uWSGI+Python框架方法介绍

    摘要:目前在和平台下使用最广泛的免费服务器有和。涉及到普通用户执行命令时权限不足的问题,可在命令前增加指令解决。是基于二进制的线路协议,与协议作用相同,但属于服务器自有协议是服务器,它实现了协议等协议安装。 前言 浏览器上网的过程简单来说即是浏览器从服务器中获取网站信息,经过渲染后将效果呈现给用户。这里侧重介绍下在幕后默默工作着的服务器。Web服务器是运行在物理服务器上的一个程序,永久地等待...

    spacewander 评论0 收藏0
  • 基于Linux环境搭建Nginx+uWSGI+Python框架方法介绍

    摘要:目前在和平台下使用最广泛的免费服务器有和。涉及到普通用户执行命令时权限不足的问题,可在命令前增加指令解决。是基于二进制的线路协议,与协议作用相同,但属于服务器自有协议是服务器,它实现了协议等协议安装。 前言 浏览器上网的过程简单来说即是浏览器从服务器中获取网站信息,经过渲染后将效果呈现给用户。这里侧重介绍下在幕后默默工作着的服务器。Web服务器是运行在物理服务器上的一个程序,永久地等待...

    whataa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<