本文学习资料:https://www.jspang.com/detailed?id=39

Nginx官网:https://www.nginx.com/

Nginx:轻量级HTTP服务器:

采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡。

文中使用的是Centos7

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

mkdir zy7y

cd zy7y

mkdir app backup download logs work

安装Nginx

  1. 查看源:yum list | grep nginx

  2. 新建源:vim /etc/yum.repos.d/nginx.repo, 加入下方代码

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

  4. 查看nginx的安装位置:rpm -ql nginx

  5. nginx.conf文件详解:cd /etc/nginx/ cat nginx.conf

    #运行用户,默认即是nginx,可以不进行设置
    user nginx;
    #Nginx进程,一般设置为和CPU核数一样
    worker_processes 1;
    #错误日志存放目录
    error_log /var/log/nginx/error.log warn;
    #进程pid存放位置
    pid /var/run/nginx.pid; events {
    worker_connections 1024; # 单个后台进程的最大并发数
    } http {
    include /etc/nginx/mime.types; #文件扩展名与类型映射表
    default_type application/octet-stream; #默认文件类型
    #设置日志模式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; #nginx访问日志存放位置 sendfile on; #开启高效传输模式
    #tcp_nopush on; #减少网络报文段的数量 keepalive_timeout 65; #保持连接的时间,也叫超时时间 #gzip on; #开启gzip压缩 include /etc/nginx/conf.d/*.conf; #包含的子配置项位置和文件
  6. default.conf配置详解: cat /etc/nginx/conf.d/default.conf

    server {
    listen 80; #配置监听端口
    server_name localhost; //配置域名 #charset koi8-r;
    #access_log /var/log/nginx/host.access.log main; location / {
    root /usr/share/nginx/html; #服务默认启动目录
    index index.html index.htm; #默认访问文件
    } #error_page 404 /404.html; # 配置404页面 # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html; #错误状态码的显示页面,配置后需要重启
    location = /50x.html {
    root /usr/share/nginx/html;
    } # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    # proxy_pass http://127.0.0.1;
    #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    # root html;
    # fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    # include fastcgi_params;
    #} # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    # deny all;
    #}
    }
  7. 输入nginx 启动nginx服务(systemctl start nginx.service 也可以)哦

  8. 停止nginx服务nginx -s quit (systemctl stop nginx.service)

  9. 查看服务运行状态:ps aux | grep nginx
  10. 修改配置文件后需要重载配置文件:nginx -s reload

  11. 自定义错误页和访问设置修改配置文件/etc/nginx/conf.d

    # 单独为每个错误码设置不同的页面
    # 在conf配置文件中添加
    error_page 404 /404_error.html
    # 在/usr/share/nginx/html目录下新建对于的html文件 # 将错误码设置成外部链接
    error_page 404 http://www.baidu.com # 简单访问设置,控制一些ip访问
    location / {
    root /usr/share/nginx/html; #服务默认启动目录
    index index.html index.htm; #默认访问文件 # 允许某个ip访问: allow 需要在deny之前不然会被deny all;覆盖
    allow 45.76.202.231; # 禁止某个ip访问; 整个配置文件 只能有一个 deny
    deny 112.74.164.224; # 禁止某个网段不能访问(1~255都不准访问)
    deny 112.74.164.1/255; # 不允许所有IP访问
    deny all;
    }
  12. Nginx访问控制权限匹配: 在location / {...}后添加

        # img目录所有ip都能访问
    location =/img{
    allow all;
    }
    # admin/目录所有ip都不能访问
    location =/admin{
    deny all;
    }
    # php结尾的不允许访问
    location ~\.php${
    deny all;
    }
  13. Nginx设置虚拟主机/etc/nginx/conf.d/default.conf

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

    # 基于端口的虚拟主机
    1. `/etc/nginx/conf.d/`新建8001.conf
    server{
    listen 8001;
    server_name localhost;
    root /usr/share/nginx/html/html8001;
    index index.html;
    }
    # 基于IP的虚拟主机
    只需要将server_name localhost 中的 localhost 修改成对应的IP
  14. Nginx反向代理的设置

    正向代理:客户端需要访问没有权限访问的真实服务器资源。但是代理服务器有该权限,而且客户端有访问代理服务器的权限,这时客户端通过访问代理服务器,代理服务器再访问真实服务器,把内容返回给客户端上面

    graph LR
    A[客户端A] -->|访问代理服务器|proxy[代理服务器]
    B[客户端B] -->|访问代理服务器|proxy[代理服务器]
    C[客户端C] -->|访问代理服务器|proxy[代理服务器]
    proxy[代理服务器]-->|访问真实服务器| server[服务器]

    反向代理:

    反向代理跟代理正好相反(需要说明的是,现在基本所有的大型网站的页面都是用了反向代理),客户端发送的请求,想要访问server服务器上的内容。发送的内容被发送到代理服务器上,这个代理服务器再把请求发送到自己设置好的内部服务器上,而用户真实想获得的内容就在这些设置好的服务器上。

    graph LR
    A[客户端A] -->|访问代理服务器|proxy[代理服务器]
    proxy[代理服务器]-->|访问真实服务器| server1[服务器1]
    proxy[代理服务器]-->|访问真实服务器| server2[服务器2]
    proxy[代理服务器]-->|访问真实服务器| server3[服务器3]

    反向代理的用途和好处

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

    # 修改配置文件`/etc/nginx/conf.d/default.conf`
    # 在 server_name ...下面一行添加
    server{
    listen 80;
    server_name localhost;
    location / {
    # 将server_name代理到其他网点
    proxy_pass http://www.xxx.com;
    }
    }
  16. Nginx适配PC或移动设备(需要两套代码,原理通过userAgent调用PC/APP代码显示给用户)

    1. 在/usr/share/nginx/目录下新建两个文件夹,分别为:pc和mobile目录
    cd /usr/share/nginx
    mkdir pc
    mkdir mobile
    2. 在pc和miblic目录下,新建两个index.html文件,文件里下面内容
    <h1>I am pc!</h1>
    <h1>I am mobile!</h1>
    3. 进入etc/nginx/conf.d目录下,修改8001.conf文件,改为下面的形式:
    server{
    listen 80;
    server_name nginx2.jspang.com;
    location / {
    root /usr/share/nginx/pc;
    # $http_user_agent,可以获取到请求客户端的userAgent
    if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
    root /usr/share/nginx/mobile;
    }
    index index.html;
    }
    }
  17. Nginx的Gzip压缩配置

    Gzip是网页的一种网页压缩技术,经过gzip压缩后,页面大小可以变为原来的30%甚至更小。更小的网页会让用户浏览的体验更好,速度更快。gzip网页压缩的实现需要浏览器和服务器的支持。

    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压缩。
    编辑文件/etc/nginx/nginx.conf,在http{default_tyue...;后添加
    # 是否启用gizp模块
    gzip on;
    gzip_types text/plain application/javascript text/css;
    }

这里只是先做个记录,方便以后用到的时候有的查,感谢技术胖

【转载-学习】[一个前端必会的 Nginx免费教程 - 技术胖]的更多相关文章

  1. [Linux] 一个前端必会的 Nginx 免费教程-在虚拟机中用deepin测试

    原文技术胖的 nginx 技术胖 专注于前端开发 deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于 debian 开发) 的 ...

  2. java学习路线之必会的java基础教程

    大数据产业已进入发展的“快车道”,急需大量优秀的大数据人才作为后盾.如果你是Java编程出身,那学习大数据自然是锦上添花:但如果你是刚刚接触大数据技术,还在Java编程基础阶段,这篇文章非常值得你看! ...

  3. 一个前端博主的nginx+php+mysql的环境搭建

    这几天天某的公司给了在下一个需求,让我修改一个后端大佬用PHP写的一个官网,虽然说修改的内容还是很简单,但是毕竟之前还是没接触过PHP,于是开始了漫长的爬坑之旅,话不多说,这次就给大家介绍一下我配置安 ...

  4. 前端开发者必备的Nginx知识

    摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...

  5. 使用gulp来构建一个前端项目

    什么是gulp? gulp是一个前端项目构建工具,是自动化项目的构建利器,它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成.你可以使用gulp及其插件对你的项目代码 ...

  6. 前端必学内容:webpack3快速入门 1-23节内容参考

    前端必学内容:webpack(模块打包器) webpack3 学习内容,点击即可到达 (1).webpack快速入门——如何安装webpack及注意事项 (2).webpack快速入门——webpac ...

  7. vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署

    最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速 ...

  8. 前端必须掌握的 nginx 技能(2)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  9. 前端必学---JavaScript数据结构与算法---简介

    前端必学---JavaScript数据结构与算法---简介 1. 数据结构: 数据结构是相互之间存在一种或者多种特定关系的数据元素的集合.---<大话数据结构> 1.1 数据结构的分类 1 ...

随机推荐

  1. 机器学习实战基础(三十五):随机森林 (二)之 RandomForestClassifier 之重要参数

    RandomForestClassifier class sklearn.ensemble.RandomForestClassifier (n_estimators=’10’, criterion=’g ...

  2. 数据可视化之PowerQuery篇(十七)Power BI数据分析应用:水平分析法

    https://zhuanlan.zhihu.com/p/103264851 ​本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之一,她深入浅出的介绍了PowerBI ...

  3. Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

    Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...

  4. opencv毛孔识别(python实现)

    毛孔识别 本文仅仅描述如何用opencv完成一个入门级别的毛孔识别,基于python3.7和 opencv 4.3 原图以及识别生成的效果图 一.首先引入需要的包,然后读取需要识别的图片 import ...

  5. 第一部分软件测试综述——软件测试背景【软件测试】(美)Ron Patton中文电子版

    截取自:第一部分软件测试综述——软件测试背景[软件测试](美)Ron Patton中文电子版(有需要的可以关注我) 第一部分软件测试综述 对手的程序死掉叫崩溃.自己的程序死掉叫“身体不良反应(idio ...

  6. Ethical Hacking - GAINING ACCESS(15)

    CLIENT SIDE ATTACKS Social Engineering Gather info about the user(s). Build a strategy based on the ...

  7. C#中的char和string的使用简介

    char 字符 char代表一个Unicode字符,它是System.Char的别名 char someChar = 'a';//定义了一个字符 char newLine= '\n';//这是一个换行 ...

  8. Makefile中自动生成头文件依赖

    为什么需要自动生成头文件依赖? 编译单个源文件时,需要获取文件中包含的头文件的信息,但是一般的Makefile不会在规则中明确写明文件依赖的头文件,所以单独修改头文件后,不会导致包含头文件的源文件重新 ...

  9. 题解 洛谷 P4098 【[HEOI2013]ALO 】

    考虑原序列中的每一个值作为构成最终答案的那个次大值,那么其所在的合法区间最大时,其对答案的贡献最大. 一个值作为最大值时有两个合法的最大区间,一个是左边第二个比其大的位置和右边第一个比其大的位置构成的 ...

  10. Monster Audio 使用教程(二)效果参数的保存

    点击左上角主菜单按钮,点击[保存]菜单,即可保存当前的所有效果参数. [另存为]菜单,则是把当前参数另存一个名称,然后通过[切换效果]菜单,实现效果的切换.  独立保存单个音轨的效果 点击音轨对应的[ ...