树莓派(12):nginx 网页服务器与反向代理

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:nginx 是一款毛子写的高性能网页服务和反向代理服务软件。使用它,可以把自己的静态、动态网页发布出去,或者作为一个代理使外界能访问服务器上无法直接访问的资源。nginx 支持 HTTPS,因而也可以用来把 HTTP 的服务代理为 HTTPS。直接使用 apt:注:在 CentOS 上, 需要先安装 epel:

nginx 是一款毛子写的高性能网页服务和反向代理服务软件。使用它,可以把自己的静态、动态网页发布出去,或者作为一个代理使外界能访问服务器上无法直接访问的资源。nginx 支持 HTTPS,因而也可以用来把 HTTP 的服务代理为 HTTPS。

安装

直接使用 apt:

apt install nginx

注:在 CentOS 上, 需要先安装 epel:

yum install epel-release

配置文件

Nginx 的配置文件在 /etc/nginx/ ,这个文件夹下的文件大多被 include 到了主配置文件 nginx.conf 中。nginx 的配置文件结构大致是:

http
{
  some settings;
  server
  {
    some settings;
  }
  server
  {
    some settings;
  }
  something;
}

我们需要修改的参数主要是 server 部分。常常在 nginx.conf 中看不到 server ,这是因为它被放在外部文件中而被 include 进来了。这一步需要看具体情况来操作。

在我的树莓派上是这样的:

include /etc/nginx/sites-enabled/*;

也就是说真正的 server 配置部分在上面的这个文件中。那么去到这个文件夹修改下面的文件,我的是:

/etc/nginx/sites-enabled/default

server内设置字段概述

listen

用于指定监听端口,也就是对外开放的端口。例如:

listen 80;

监听 ipv4 上的 80 端口(HTTP 默认端口)。

listen [::]:80;

监听 ipv6 上的 80 端口。

listen 设置只能出现在 server 中,但可以出现多次。

server_name

指明虚拟主机的名字,用于选择不同的虚拟主机。

在我刚开始学习的时候,这个设置令我相当疑惑。其实它主要用于多域名:在打开一个网页时,浏览器会向服务器发送一个 HTTP 请求头,这个头里面包含了所请求的域名。服务器接收到这个域名,便可以得知要进行哪个域名的服务。这样,一个服务器就可以给多个域名(注意:1.a.com 与 2.a.com 是不同的域名)提供服务,就好像是多个服务器一样,也就因此有了“虚拟主机”的名字。

例如:beardic.cn与tools.beardic.cn,在域名解析中它们指向同一个地址 47.94.238.201,但得到的内容却是不同的。只需要创建两个 server ,分别设置它们的 server_name 为 beardic.cn 和 tools.beardic.cn 即可。

这个字段的设置也可以是 IP 地址,用于 IP 直接访问的时候。可以用来禁止直接的 IP 访问。

使用配置 server_name _ 可以在别的 server 都匹配失败时进行接管。在这种情况下如果没有这个配置,则将使用顺序第一个的 server

server_name 只能出现在 server 中,且只能出现一次。

root

设置网站的根目录。例如:

root /var/www/html/;

那么,假如你的域名是 example.com,访问 example.com/folder/pic.jpg 即是访问 /var/www/html/folder/pic.jpg。

root 设置可以出现在 serverlocation 中。

index

设置默认主页名字。一般(如果使用了 PHP)的设置是:

index index.html index.htm index.php;

它的作用是,访问网址 example.com/folder/(而不是 example.com/folder/index.html)时,自动依次检索 folder 目录下的 index.html、index.htm、index.php,一旦找到就返回给用户。

index 设置可以出现在 serverlocation 中。

location

location 里面又另有一番天地。 它可以有多个,用来匹配用户请求的地址中 server_name 后面的部分。反向代理就会用到这个,例如在反代 deluge-web 时:

location /deluge/
{
  proxy_pass http://localhost:8112/;
  proxy_set_header X-Deluge-Base "/deluge/";
  add_header X-Frame-Options SAMEORIGIN;	
}

我们先看这段配置的第一行: location /deluge/ 。这表示它会匹配对 example.com/deluge/ 以及子目录的所有请求。

里面的第一句 proxy_pass http://localhost:8112/; 是反代的核心。它表示,把匹配到的所有请求都转发到 http://localhost:8112/ 上,从而使外界访问 example.com/deluge 的时候能看到在服务器上访问 http://localhost:8112/ 所看到的页面。

而后面的两句就和 HTTP 请求头有关系了。前面讲到 HTTP 请求头会包含用户请求的域名,事实上它除此之外还有用户的 IP、请求方法、Cookie、加密算法等信息。直接的 proxy_pass 会使后端服务器接收到的请求头与用户实际发出的请求头不同,所以可能需要加上一些额外的语句。

当然, location 里面也可以不是 proxy_pass ,它还可以是 rootindex 来使用不同的根目录:所以上面说 location 里面又有一番天地。

此外, location 的第一行匹配还有别的方式,例如 location = /a/

location匹配结尾是否加斜杠“/”与其中的 rootproxy_pass 结尾是否加反斜杠之间有一定关系,不同组合有不同效果。可参考 这篇文章 里面的实验。

locationserver 中可以出现多次。

access_log

用于记录访问日志。一般写法:

access_log /var/log/thelogfile.log;

或者关闭之:

access_log off;

能够出现在 httpserverlocation 中。可以在 server 中打开,而在某些特定的 location 中关闭。

例子

deluge反代

有关 deluge,可以参看之前的文章。

server 
{
  listen 80;
  listen [::]:80;
  server_name example.com;

  index index.html index.htm index.php;
  root /home/www/;

  access_log  /home/wwwlogs/access.log;
  location /deluge/
  {
    proxy_pass http://localhost:8112/;
    proxy_set_header X-Deluge-Base "/deluge/";
    add_header X-Frame-Options SAMEORIGIN;	
  }   
}

这个例子在上面有提到。deluge-web 是默认在某个端口上进行服务的,并且不支持 HTTPS。往往反代它的目的是转移到另一个端口(80)的子目录,并且加上 HTTPS,达到方便且安全的目的。

在实际应用中,这段配置最关键的部分是 proxy_set_header X-Deluge-Base "/deluge/" ,它在http请求头中加入了子目录信息。这是因为 deluge-web 自带的服务端会匹配子目录,如果访问的地址不匹配,将只会展示一个有标题的空白页,见这篇文章。

部署静态网页

要部署静态网页,只需要把网页及其附带文件放入 root 所定义的根目录下。例如在上面的 deluge 例子中,定义了 root 在文件夹 /home/www/ 下,那么通过 FTP 等文件传输的方式传网页至 /home/www/somepath/ 就可以了。结合 index 配置,能够使访问 example.com/somepath/ 时直接访问主页。当然,把网页放在网站根目录也是可以的。

以 AriaNg( Git )为例。Aria 是一个优秀的下载器,但是没有好看易用的图形用户界面(GUI)。AriaNg 是为 Aria 开发的一个单纯的网页 GUI,由 HTML+CSS+JS 实现,不涉及 PHP,是一个静态网页。部署它甚至不需要修改 nginx 配置文件,只需把它放到所希望的目录下就可以了。例如,我配置的 root 是 /home/wwwroot/default,然后 AriaNg 在 /home/wwwroot/default/aria/,那么访问 your.domain/aria/ 即可。

阅读: 12


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

后现代经济

后现代经济

姜奇平 / 中信出版社 / 2009-7 / 45.00元

《后现代经济:网络时代的个性化和多元化》站在历史“终结”与“开始”的切换点上,以价值、交换、货币、资本、组织、制度、福利等方面为线索,扬弃现代性经济学,对工业化进行反思,深刻剖析了“一切坚固的东西都烟消云散”的局限性,在此基础上展开对现代性经济的解构和建构。“9·11”中坚固的世贸中心大楼灰飞烟灭,2008年坚固的华尔街投资神话彻底破灭,坚固的雷曼兄弟公司在挺立了158年后烟消云散……一切坚固的东......一起来看看 《后现代经济》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换