内容简介: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
设置可以出现在 server
和 location
中。
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
设置可以出现在 server
和 location
中。
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
,它还可以是 root
、 index
来使用不同的根目录:所以上面说 location
里面又有一番天地。
此外, location
的第一行匹配还有别的方式,例如 location = /a/
。
location匹配结尾是否加斜杠“/”与其中的 root
或 proxy_pass
结尾是否加反斜杠之间有一定关系,不同组合有不同效果。可参考 这篇文章
里面的实验。
location
在 server
中可以出现多次。
access_log
用于记录访问日志。一般写法:
access_log /var/log/thelogfile.log;
或者关闭之:
access_log off;
能够出现在 http
、 server
、 location
中。可以在 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用树莓派和Rocket.Chat构建一个私人聊天服务器
- 使用微信 + 树莓派 + Arduino + 服务器构建你的看门狗
- [树莓派]树莓派的入门教程
- 「玩转树莓派」树莓派 3B+ 安装 OpenCv
- 「玩转树莓派」树莓派 3B+ 查询本机IP
- 「玩转树莓派」树莓派 3B+ 配置静态IP
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。