前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

工作中常用的Nginx配置总结回顾

首页2018-11-20 10:58:20Back-End
Nginx部署

Nginx 配置文件在线生成: https://nginxconfig.io/

# 一、Nginx介绍

Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异步事件模型,削减上下文调度的开销,提高服务器并发能力。采用了模块化设计,提供了丰富模块的第三方模块。

所以关于 Nginx,有这些标签:「异步」「事件」「模块化」「高性能」「高并发」「反向代理」「负载均衡」

  • Linux系统:Centos 7 x64
  • Nginx版本:1.11.5

# 二、安装

# 2.1 安装依赖

prce(重定向支持)和openssl(https支持,如果不需要https可以不安装。)

yum install -y pcre-devel 
yum -y install gcc make gcc-c++ wget
yum -y install openssl openssl-devel 
@前端进阶之旅: 代码已经复制到剪贴板

CentOS 6.5 我安装的时候是选择的“基本服务器”,默认这两个包都没安装全,所以这两个都运行安装即可。

# 2.2 下载

nginx的所有版本在这里

wget http://nginx.org/download/nginx-1.13.3.tar.gz
wget http://nginx.org/download/nginx-1.13.7.tar.gz

# 如果没有安装wget
# 下载已编译版本
$ yum install wget

# 解压压缩包
tar zxf nginx-1.13.3.tar.gz
@前端进阶之旅: 代码已经复制到剪贴板

# 2.3 编译安装

然后进入目录编译安装,configure参数说明

cd nginx-1.11.5
./configure


....
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
@前端进阶之旅: 代码已经复制到剪贴板

安装报错误的话比如:“C compiler cc is not found”,这个就是缺少编译环境,安装一下就可以了 yum -y install gcc make gcc-c++ openssl-devel

如果没有error信息,就可以执行下边的安装了:

make
make install
@前端进阶之旅: 代码已经复制到剪贴板

# 2.4 nginx测试

运行下面命令会出现两个结果,一般情况nginx会安装在/usr/local/nginx目录中

cd /usr/local/nginx/sbin/
./nginx -t

# nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
# nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
@前端进阶之旅: 代码已经复制到剪贴板

# 2.5 设置全局nginx命令

vi ~/.bash_profile
@前端进阶之旅: 代码已经复制到剪贴板

将下面内容添加到 ~/.bash_profile 文件中

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin/
export PATH
@前端进阶之旅: 代码已经复制到剪贴板

运行命令 source ~/.bash_profile 让配置立即生效。你就可以全局运行 nginx 命令了。

# 三、开机自启动

开机自启动方法一:

编辑 vi /lib/systemd/system/nginx.service 文件,没有创建一个 touch nginx.service 然后将如下内容根据具体情况进行修改后,添加到nginx.service文件中:

[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
@前端进阶之旅: 代码已经复制到剪贴板
  • [Unit]:服务的说明
  • Description:描述服务
  • After:描述服务类别
  • [Service]服务运行参数的设置
  • Type=forking是后台运行的形式
  • ExecStart为服务的具体运行命令
  • ExecReload为重启命令
  • ExecStop为停止命令
  • PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

  • 保存退出。
  • 设置开机启动,使配置生效:
systemctl enable nginx.service
# 输出下面内容表示成功了
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
@前端进阶之旅: 代码已经复制到剪贴板

开机自启动方法二:

vi /etc/rc.local

# 在 rc.local 文件中,添加下面这条命令
/usr/local/nginx/sbin/nginx start
@前端进阶之旅: 代码已经复制到剪贴板

如果开机后发现自启动脚本没有执行,你要去确认一下rc.local这个文件的访问权限是否是可执行的,因为rc.local默认是不可执行的。修改rc.local访问权限,增加可执行权限:

chmod +x /etc/rc.d/rc.local
@前端进阶之旅: 代码已经复制到剪贴板

# 四、运维

# 4.1 服务管理

# 启动
/usr/local/nginx/sbin/nginx

# 重启
/usr/local/nginx/sbin/nginx -s reload

# 关闭进程
/usr/local/nginx/sbin/nginx -s stop

# 平滑关闭nginx
/usr/local/nginx/sbin/nginx -s quit

# 查看nginx的安装状态,
/usr/local/nginx/sbin/nginx -V 
@前端进阶之旅: 代码已经复制到剪贴板

关闭防火墙,或者添加防火墙规则就可以测试了

service iptables stop
@前端进阶之旅: 代码已经复制到剪贴板

或者编辑配置文件:

vi /etc/sysconfig/iptables
@前端进阶之旅: 代码已经复制到剪贴板

添加这样一条开放80端口的规则后保存:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
@前端进阶之旅: 代码已经复制到剪贴板

重启服务即可:

service iptables restart
# 命令进行查看目前nat
iptables -t nat -L
@前端进阶之旅: 代码已经复制到剪贴板

# 4.2 重启服务防火墙报错解决

service iptables restart
# Redirecting to /bin/systemctl restart  iptables.service
# Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.
@前端进阶之旅: 代码已经复制到剪贴板

在CentOS 7或RHEL 7或Fedora中防火墙由 firewalld 来管理,当然你可以还原传统的管理方式。或则使用新的命令进行管理。 假如采用传统请执行一下命令:

# 传统命令
systemctl stop firewalld
systemctl mask firewalld
@前端进阶之旅: 代码已经复制到剪贴板
# 安装命令
yum install iptables-services

systemctl enable iptables 
service iptables restart
@前端进阶之旅: 代码已经复制到剪贴板

# 五、nginx卸载

如果通过yum安装,使用下面命令安装。

yum remove nginx
@前端进阶之旅: 代码已经复制到剪贴板
  • 编译安装,删除/usr/local/nginx目录即可
  • 如果配置了自启动脚本,也需要删除。

# 六、参数说明

fe
  • 一、Nginx介绍
  • 二、安装
    • 2.1 安装依赖
    • 2.2 下载
    • 2.3 编译安装
    • 2.4 nginx测试
    • 2.5 设置全局nginx命令
  • 三、开机自启动
  • 四、运维
    • 4.1 服务管理
    • 4.2 重启服务防火墙报错解决
  • 五、nginx卸载
  • 六、参数说明
  • 七、配置
    • 7.1 常用正则
    • 7.2 全局变量
    • 7.3 符号参考
    • 7.4 配置文件
    • 7.5 内置预定义变量
    • 7.6 反向代理
    • 7.7 负载均衡
      • 7.7.1 RR
      • 7.7.2 权重
      • 7.7.3 ip_hash
      • 7.7.4 fair
      • 7.7.5 url_hash
    • 7.8 屏蔽ip
  • 八、第三方模块安装方法
  • 九、重定向
    • 9.1 重定向整个网站
    • 9.2 重定向单页
    • 9.3 重定向整个子路径
  • 十、性能
    • 10.1 内容缓存
    • 10.2 Gzip压缩
    • 10.3 打开文件缓存
    • 10.4 SSL缓存
    • 10.5 上游Keepalive
    • 10.6 监控
  • 十一、常见使用场景
    • 11.1 跨域问题
    • 11.2 跳转到带www的域上面
    • 11.3 代理转发
    • 11.4 代理转发连接替换
    • 11.5 ssl配置
    • 11.6 强制将http重定向到https
    • 11.7 两个虚拟主机
    • 11.8 虚拟主机标准配置
    • 11.9 防盗链
    • 11.10虚拟目录配置
    • 11.11 防盗图配置
    • 11.12 屏蔽.git等文件
    • 11.13 域名路径加不加需要都能正常访问
  • 十二、错误问题
  • 十三、Nginx思维导图
  • 十四、精品文章参考

← React Fiber 架构原理,可中断渲染的数据结构与遍历机制Docker小结篇 →