Nginx 入门篇

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

内容简介:Mac 下安装1、安装 brew 命令2、安装 Nginx

Mac 下安装

1、安装 brew 命令

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2、安装 Nginx

brew install nginx

3、启动 Nginx

nginx

如果没有报错的话打开 http://localhost:8080 就可以看到效果了。

配置文件所在目录 /usr/local/etc/nginx/nginx.conf

安装文件所在目录 /usr/local/Cellar/nginx

Linux 下安装(本文后面的内容也主要是在 Centos 环境中演示)

先安装一些服务器要用到的东西

yum -y install gcc gcc-c++ autoconf pcre-devel make automake
yum -y install wget httpd-tools vim

查看 yum 是否存在

yum list | grep nginx

如果存在会如以下图示

Nginx 入门篇

和官网的对比一下发现不是最新的,所以要增加 nginx 的 yum 源,输入以下命令新建

vim /etc/yum.repos.d/nginx.repo

并把以下内容粘贴进去

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

因为我的是 centos 系统,版本是7.2,所以链接里面是 /centos/7,现在再运行一下检查命令就可以查看到最新 nginx 版本了

yum list | grep nginx

接着就是安装了

yum install nginx

安装完成后输入nginx -v查看版本号,如果显示版本就表示安装成功了

Nginx 入门篇

二、Nginx 配置文件解析

三、启动、停止、重启等常用操作

启动

1、直接使用 nginx

nginx

2、使用 systemctl 命令,这个是 Linux 的服务启动命令

systemctl start nginx.service

有没有启动成功呢?可以输入以下命令查看

ps aux | grep nginx

Nginx 入门篇

停止

1、立即停止服务。这种方法无论进程是否在运行,都直接停止进程。

nginx  -s stop

2、立即停止服务。这种方法相对没那么强硬,需要在进程完成当前工作后再停止。

nginx  -s quit

3、killall 直接杀死进程。如果上面的两个方法无效,可以试试这个。

killall nginx

4、systemctl 停止。这个和启动方法中第二条类似,都是使用 Linux 的服务命令。

systemctl stop nginx.service

重启

重启也是经常会用到的

systemctl restart nginx.service

重载配置文件

有时修改了配置文件可以不用重启,直接重载配置文件就可以了。

nginx -s reload

查看端口号

有时候需要查看哪些端口在运行,或者被占用了,可以使用 netstat 命令查看

netstat -tlnp

四、自定义错误页

自定义错误页

网站发生错误时一般会返回相应的状态码,比如500、502、503等等,或者404页面。那这些对应的返回页面在 Nginx 里怎么配置呢。

进入 /etc/nginx/conf.d 目录 打开 default.conf 配置文件就可以作相应的修改了

Nginx 入门篇

添加404页面配置,当然你还要在网站根目录创建一个404.html页面才行

Nginx 入门篇

其中 /404.html 也可以改成一个链接地址如: ( https://pojian.xyz)[https://pojian.xyz],这样当你访问为404状态时就会直接跳转到你配置的这个链接地址。

最后还需要你执行重载配置文件或者重启服务器,再访问相应的页面就会看到对应的效果页。

五、访问权限设置

指令优先级

打开配置文件

vi /etc/nginx/nginx.conf

在 location 里填写 deny 和 allow 配置信息,deny 和 allow 后面可以填写 ip 或者一个 ip 段,再或者 all,all 表示全部,比如这里我填写的是我本机的ip,allow 表示允许该 ip 的访问,接着重启 nginx

nginx -s quit
nginx

Nginx 入门篇

上面的配置表示只允许 113.118.186.11 进行访问,其他的IP是禁止访问

Nginx 入门篇

如果上面的 allow 和 deny 位置互换一下呢?

deny all;
allow 113.118.186.11;

这里你会发再所有 ip 都不能访问了,这就说明了配置对顺序是有要求的,同一个块下的两个权限指令,先出现的设置会覆盖后出现的设置。

其他访问控制权限匹配

有时权限控制会比上面的情况会多样一点,比如站点下的 images 文件是所有用户都可以访问的,而 admin 文件夹只有管理员才能访问,这时就需要 location 来配合实现了

六、配置虚拟主机

基于端口号

基于端口号配置多个虚拟主机,根据不同的端口号来访问不同的站点,原来就是监听端口号。

可以直接配置了主配置文件 etc/nginx/nginx.conf,也可以配在子配置文件目录下 etc/nginx/conf.d,这里拿配置在子文件做示例

etc/nginx/conf.d/default.conf 默认监听的是 80 端口,指向的目录是 /data/www

vim /etc/nginx/conf.d/default.conf

Nginx 入门篇

现在我们配置添加一个新的虚拟主机,监听 8081 端口

vim /etc/nginx/conf.d/8081.conf

8081.conf 具体配置如下,监听的端口为 8081 ,指向的目录是 /data/www/8081,和 80 端口指向的目录不一样

Nginx 入门篇

这里需要你自己去新建一个 8081 目录和 index.html 文件

mkdir /data/www/8081
vim /data/www/8081/index.html

最后访问 xxx.com 和 xxx.com:8081 会访问到不同的站点,当然前提是你的域名已经解析到你的服务器,要不然的话就只能通过 ip 访问了 xxx.xxx.xx.xx 和 xxx.xxx.xx.xx:8081 访问。

基于域名配置

基于域名配置,我这里先说一个前提,就是你的域名已经成功解析到服务器。

Nginx 入门篇

下面开始配置 nginx

/etc/nginx/conf.d/default.conf 配置文件监听的是 80 端口,指向目录是 /data/www,注意看 server_name 改成域名地址

Nginx 入门篇

接着我们来配置另外一个虚拟站点 /etc/nginx/conf.d/8081.conf,注意了 这里监听我端口也是 80 端口,不是其他的端口号,但 server_name 和 root 目录跟上面的不一样

Nginx 入门篇

这样当你访问 nginx.pojian.xyz 和 nginx2.pojian.xyz 时访问会是配置的不同的两个站点。

七、反向代理

正向代理

A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以说是正向代理,王老师代替A同学办这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。

我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些科学上网 工具 扮演的就是典型的正向代理角色。用浏览器访问 http://www.google.com 时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

Nginx 入门篇

反向代理

大家都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。

反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了, www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,具体访问哪台服务器Server是由Nginx来控制的,一般用来做负载均衡。

Nginx 入门篇

两者的区别在于代理的对象不一样: 正向代理代理的对象是客户端,反向代理代理的对象是服务端

最简单的反向代理

下面就说一个最简单的反向代理配置,先打开我们前面配置的 8081 端口虚拟站点配置文件

vim /etc/nginx/conf.d/8081.conf

Nginx 入门篇

原来的 root 和 index 不要了,换成一个 location 代理地址,看下图

Nginx 入门篇

这样当你访问 nginx2.pojian.xyz 的时候 nginx 会帮你反向代理到https://pojian.xyz 这个地址上去,proxy_pass 一般是填写 ip,但填写域名也可以。

其它一些较常用的反向代理指令

  • proxy_set_header: 在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
  • proxy_connect_timeout: 配置Nginx与后端代理服务器尝试建立连接的超时时间。
  • proxy_read_timeout: 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
  • proxy_send_timeout: 配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
  • proxy_redirect: 用于修改后端服务器返回的响应头中的Location和Refresh。

八、开启 Gzip 压缩

Nginx提供了专门的gzip模块,并且模块中的指令非常丰富。

  • gzip : 该指令用于开启或 关闭gzip模块。
  • gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
  • gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。
  • gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能。
  • gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。
  • gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0.
  • gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。
  • gzip_vary : 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。

最简单的配置

http {
    .....
    gzip on;
    gzip_types text/plain application/javascript text/css;
    .....
}

Nginx 入门篇


以上所述就是小编给大家介绍的《Nginx 入门篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具