关于nginx:Nginx-步骤学习

4次阅读

共计 6370 个字符,预计需要花费 16 分钟才能阅读完成。

终端连贯近程服务器

ssh name@ip  // 其中 name 指服务器登录用户名  ip 指服务器地址
#例:ssh root@121.196.195.3

回车,输出服务器明码,不出意外曾经连上了你的服务器,接下来随心所欲吧。


根本配置

启动

nginx 间接启动

在 CentOS7.4 版本里(低版本是不行的),是能够间接间接应用 nginx 启动服务的。

nginx

应用 systemctl 命令启动

还能够应用个 Linux 的命令进行启动,我个别都是采纳这种办法进行应用。因为这种办法无论启动什么服务,都是一样的,只是换一下服务的名字(不必减少额定的记忆点)。

systemctl start nginx.service

输出命令后,没有任何提醒,那咱们如何晓得 Nginx 服务曾经启动了哪?能够应用 Linux 的组合命令,进行查问服务的运行状况。

ps aux | grep nginx

如果启动胜利会呈现如上面相似的后果。

root     20152  0.0  0.0  46392   976 ?        Ss   13:23   0:00 nginx: master process nginx
nginx    20153  0.0  0.1  46788  2172 ?        S    13:23   0:00 nginx: worker process
root     20221  0.0  0.0 112648   964 pts/0    R+   13:33   0:00 grep --color=auto nginx

有这三条记录,阐明咱们 Nginx 被失常开启了。


进行

进行 Nginx 服务的四种办法
进行 Nginx 办法有很多种,能够依据需要采纳不一样的办法,咱们一个一个阐明。

  1. 立刻进行服务
nginx  -s stop

这种办法比拟强硬,无论过程是否在工作,都间接进行过程。

  1. 从容进行服务
nginx -s quit

这种办法较 stop 相比就比拟温和一些了,须要过程实现当前工作后再进行。

  1. killall 办法杀死过程

这种办法也是比拟横蛮的,咱们间接杀死过程,然而在下面应用没有成果时,咱们用这种办法还是比拟好的。

killall nginx
  1. systemctl 进行
systemctl stop nginx.service

重启 Nginx 服务

有时候咱们须要重启 Nginx 服务,这时候能够应用上面的命令。

systemctl restart nginx.service

从新载入配置文件

在从新编写或者批改 Nginx 的配置文件后,都须要作一下从新载入,这时候能够用 Nginx 给的命令。

nginx -s reload

查看端口号

在默认状况下,Nginx 启动后会监听 80 端口,从而提供 HTTP 拜访,如果 80 端口曾经被占用则会启动失败。我么能够应用 netstat -tlnp 命令查看端口号的占用状况。


自定义谬误页面和拜访设置

多谬误指向一个页面

在 /etc/nginx/conf.d/default.conf 是能够看到上面这句话的。

error_page   500 502 503 504  /50x.html;

error_page 指令用于自定义谬误页面,500,502,503,504 这些就是 HTTP 中最常见的错误代码,/50.html 用于示意当产生上述指定的任意一个谬误的时候,都是用网站根目录下的 /50.html 文件进行解决。

独自为谬误置顶解决形式

有些时候是要把这些谬误页面独自的体现进去,给用户更好的体验。所以就要为每个错误码设置不同的页面。设置办法如下:

error_page 404  /404_error.html;

而后到网站目录下新建一个 404_error.html 文件,并写入一些信息。

<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>404 页面没有找到!</h1>
    </body>
</html>

而后重启咱们的服务,再进行拜访,你会发现 404 页面产生了变动。

把错误码换成一个地址

处理错误的时候,不仅能够只应用本服务器的资源,还能够应用内部的资源。比方咱们将配置文件设置成这样。

error_page  404 http://baidu.com;

咱们应用了百度地址作为 404 页面没有找到的提醒,就造成了,没有找到文件,就间接跳到了百度上了

简略实现访问控制

有时候咱们的服务器只容许特定主机拜访,比方外部 OA 零碎,或者利用的治理后盾零碎,更或者是某些利用接口,这时候咱们就须要管制一些 IP 拜访,咱们能够间接在 location 里进行配置。

能够间接在 default.conf 里进行配置。

location / {
    #不能够拜访的 ip
    #deny   123.9.51.42;
    #能够拜访 ip
    allow  45.76.202.231;
    #除了 allow 都不能够拜访
    deny   all;
}

配置实现后,重启一下服务器就能够实现限度和容许拜访了。这在工作中十分罕用,肯定要好好记得。


Nginx 拜访权限具体

指令优先级

咱们先来看一下代码:

location / {
    allow  45.76.202.231;
    deny   all;
}

下面的配置示意只容许 45.76.202.231 进行拜访,其余的 IP 是禁止拜访的。然而如果咱们把 deny all 指令,挪动到 allow 45.76.202.231 之前,会产生什么那?会发现所有的 IP 都不容许拜访了。这阐明了一个问题:就是在同一个块下的两个权限指令,先呈现的设置会笼罩后呈现的设置(也就是谁先触发,谁起作用)。

简单访问控制权限匹配

在工作中,拜访权限的管制需要更加简单,例如,对于网站下的 img(图片目录)是运行所有用户拜访,但对于网站下的 admin 目录则只容许公司外部固定 IP 拜访。这时候仅靠 deny 和 allow 这两个指令,是无奈实现的。咱们须要 location 块来实现相干的需要匹配。

location =/img{allow all;}
location =/admin{deny all;}

= 号代表准确匹配,应用了 = 后是依据其后的模式进行准确匹配。这个间接关系到咱们网站的平安,肯定要学会

应用正则表达式设置拜访权限

只有准确匹配有时是完不成咱们的工作工作的,比方当初咱们要禁止拜访所有 php 的页面,php 的页面大多是后盾的治理或者接口代码,所以为了平安咱们常常要禁止所有用户拜访,而只凋谢公司外部拜访的。

代码如下:

location ~\.php$ {deny all;}

这样咱们再拜访的时候就不能拜访以 php 结尾的文件了。是不是让网站变的平安很多了那?


设置虚拟主机

虚拟主机是指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都能够对外提供 Web 服务,并且互不烦扰。在外界看来,虚拟主机就是一台独立的服务器主机,这意味着用户可能利用虚拟主机把多个不同域名的网站部署在同一台服务器上,而不用再为建设一个网站独自购买一台服务器,既解决了保护服务器技术的难题,同时又极大地节俭了服务器硬件老本和相干的维护费用。

配置虚拟主机能够基于端口号、基于 IP 和基于域名,这节课咱们先学习基于端口号来设置虚拟主机。

基于端口号配置虚拟主机

基于端口号来配置虚拟主机,算是 Nginx 中最简略的一种形式了。原理就是 Nginx 监听多个端口,依据不同的端口号,来辨别不同的网站。

咱们能够间接配置在主文件里 etc/nginx/nginx.conf 文件里,也能够配置在子配置文件里 etc/nginx/conf.d/default.conf。我这里为了配置不便,就配置在子文件里了。当然你也能够再新建一个文件,只有在 conf.d 文件夹下就能够了。

批改配置文件中的 server 选项,这时候就会有两个 server。

server{
    listen 8001;
    server_name localhost;
    root /usr/share/nginx/html/html8001;
    index index.html;
}

编在 usr/share/nginx/html/html8001/ 目录下的 index.html 文件并查看后果。

<h1>welcome port 8001</h1>

最初在浏览器中别离拜访地址和带端口的地址。看到的后果是不同的。

而后咱们就能够在浏览器中拜访 http://112.74.164.244:8001

基于 IP 的虚拟主机

基于 IP 和基于端口的配置简直一样,只是把 server_name 选项,配置成 IP 就能够了。

比方下面的配置,咱们能够批改为:

server{
    listen 80;
    server_name 112.74.164.244;
    root /usr/share/nginx/html/html8001;
    index index.html;
}

这种须要多个 IP 的反对。


Nginx 应用域名设置虚拟主机

在实在的上线环境中,一个网站是须要域名和公网 IP 才能够拜访的。咱们在理论工作中配置最多的就是设置这种虚拟主机。

配置以域名为划分的虚拟主机

咱们批改 etc/nginx/conf.d 目录下的default.conf 文件,把原来的 80 端口虚拟主机改为以域名划分的虚拟主机。代码如下:

server {
    listen       80;
    server_name  www.suhangweb.com;

咱们再把同目录下的 8001.conf 文件进行批改,改成如下:

server{
        listen 80;
        server_name www.suhangweb.com;
        location / {
            root /usr/share/nginx/html/html8001;
            index index.html index.htm;
        }
}

而后咱们用平滑重启的形式,进行重启,这时候咱们在浏览器中拜访这两个网页。

其实域名设置虚拟主机也非常简单,次要操作的是配置文件的 server_name 项,还须要域名解析的配合。

Nginx 反向代理的设置

虚拟主机实现了,作为一个前端必会的一个技能是反向代理。大家都晓得,咱们当初的 web 模式根本的都是规范的 CS 构造,即 Client 端到 Server 端。那代理就是在 Client 端和 Server 端之间减少一个提供特定性能的服务器,这个服务器就是咱们说的代理服务器。

反向代理的用处和益处

  • 安全性:正向代理的客户端可能在暗藏本身信息的同时拜访任意网站,这个给网络安全代理了极大的威逼。因而,咱们必须把服务器爱护起来,应用反向代理客户端用户只能通过外来网来拜访代理服务器,并且用户并不知道本人拜访的实在服务器是那一台,能够很好的提供平安爱护。
  • 功能性:反向代理的主要用途是为多个服务器提供负债平衡、缓存等性能。负载平衡就是一个网站的内容被部署在若干服务器上,能够把这些机子看成一个集群,那 Nginx 能够将接管到的客户端申请“平均地”调配到这个集群中所有的服务器上,从而实现服务器压力的平均分配,也叫负载平衡。

最简略的反向代理

当初咱们要拜访 http://www.suhangweb.com 而后反向代理到 baidu.com 这个网站。咱们间接到 etc/nginx/con.d/8001.conf 进行批改。

批改后的配置文件如下:

server{
        listen 80;
        server_name www.suhangweb.com;
        location / {proxy_pass http://baidu.com;}
}

个别咱们反向代理的都是一个 IP,然而我这里代理了一个域名也是能够的。其实这时候咱们反向代理就算胜利了,咱们能够在浏览器中关上 http://www.suhangweb.com 来测试一下。

其它反向代理指令

反向代理还有些罕用的指令,我在这里给大家列出:

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

Nginx 适配 PC 或挪动设施

当初很多网站都是有了 PC 端和 H5 站点的,因为这样就能够依据客户设施的不同,显示出体验更好的,不同的页面了。

这样的需要有人说拿自适应就能够搞定,比方咱们常说的 bootstrap 和 24 格布局法,这些的确是十分好的计划,然而无论是复杂性和易用性下面还是不如离开编写的好,比方咱们常见的淘宝、京东 …… 这些大型网站就都没有采纳自适应,而是用离开制作的形式。

那离开制作如何通过配置 Nginx 来辨认出应该展现哪个页面那?

$http_user_agent 的应用:

Nginx 通过内置变量$http_user_agent,能够获取到申请客户端的 userAgent,就能够用户目前处于挪动端还是 PC 端,进而展现不同的页面给用户。

操作步骤如下:

  1. 在 /usr/share/nginx/ 目录下新建两个文件夹,别离为:pc 和 mobile 目录
cd /usr/share/nginx
mkdir pc
mkdir mobile
  1. 在 pc 和 miblic 目录下,新建两个 index.html 文件,文件里上面内容
<h1>I am pc!</h1>
<h1>I am mobile!</h1>
  1. 进入 etc/nginx/conf.d 目录下,批改 8001.conf 文件,改为上面的模式:
server{
     listen 80;
     server_name nginx2.jspang.com;
     location / {
      root /usr/share/nginx/pc;
      if ($http_user_agent ~* '(Android|webOS|ip|iPod|BlackBerry)') {root /usr/share/nginx/mobile;}
      index index.html;
     }
}

Nginx 的 Gzip 压缩配置

Gzip 是网页的一种网页压缩技术,通过 gzip 压缩后,页面大小能够变为原来的 30% 甚至更小。更小的网页会让用户浏览的体验更好,速度更快。gzip 网页压缩的实现须要浏览器和服务器的反对。

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 压缩。

gzip 最简略的配置

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

gzip on是启用 gizp 模块,上面的一行是用于在客户端拜访网页时,对文本、JavaScript 和 CSS 文件进行压缩输入。

配置好后,咱们就能够重启 Nginx 服务,让咱们的 gizp 失效了。

如果你是 windows 操作系统,你能够按 F12 键关上开发者工具,单机以后的申请,在标签中抉择 Headers,查看 HTTP 响应头信息。你能够分明的看见 Content-Encoding 为 gzip 类型。

正文完
 0