前端应该掌握的nginx知识
前言
为什么要懂nginx?
- 首先,提高自己的服务器部署能力
- 其次,有助于理解后端接口链路
- 解决跨域问题
- 负载均衡
- 静态服务器
- 多/单页面网站
- gzip
安装(以ubuntu 为例):
$ sudo apt-get install nginx
更多请查看:安装NGINX
查看版本:
$ sudo nginx -v
# 出现版本信息表示安装成功
nginx version: nginx/1.6.2
常见命令 启动服务:
$ nginx
其他命令:
$ nginx -s
SIGNAL:
- quit – 正常关闭服务
- reload – 重新加载配置文件运行
- reopen – 打开日志文件
- stop – 立刻关闭服务
通过上述方式安装的来看:
- 默认配置文件路径
/etc/nginx/nginx.conf
- 这个文件里可能会有引用,比如
include /etc/nginx/conf.d/*.conf;
那么实际上你的项目配置文件就是在/etc/nginx/conf.d/这个文件夹下的所有.conf文件; - 一般一个项目(域名)配一个文件,比如你的域名是www.baidu.com,那么你的配置文件就可以叫
/etc/nginx/conf.d/www.baidu.com.conf
文章图片
main:nginx的全局配置,对全局生效。
events:配置影响nginx服务器或与用户的网络连接。
http:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
server:配置虚拟主机的相关参数,一个http中可以有多个server。
location:配置请求的路由,以及各种页面的处理情况。
upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
解决跨域
Http负载均衡
负载均衡策略: 待补充
配置upstream:
upstream balanceServer {
server 10.1.22.33:12345;
server 10.1.22.34:12345;
server 10.1.22.35:12345;
}
配置server:
server {
server_namefe.server.com;
listen 80;
location /api {
proxy_pass http://balanceServer;
}
}
静态服务器
/data/static/
提供目录浏览:server{
listen 80 default_server;
server_name www.example.com;
location ^~ /static {
root /data/static/;
# 设置访问服务器下的文件目录
autoindex on;
# 开启目录浏览
access_logoff;
# 关闭访问日志
charset utf-8,gbk;
#防止中文目录出现乱码
expires10h;
# 设置过期时间为10小时
}
}
查看更多:[nginx 开启目录浏览功能及主题美化
](https://ld246.com/article/156...)
单页面网站
server {
server_namefe.server.com;
listen 80;
location / {
root /data/www;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
- root
- index
- try_files
server {
server_namefe.server.com;
listen 80;
location /app {}
location /pc {}
location /api {}
location / {
root /data/www;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
Gzip
使用Gzip实现HTTP压缩,能改进传输速度和带宽利用率。
gzipon;
gzip_http_version1.1;
gzip_comp_level5;
gzip_min_length1000;
gzip_types text/csv text/xml text/css text/plain text/javascript application/javascript application/x-javascript application/json application/xml;
- gzip: 决定是否开启gzip模块,on表示开启,off表示关闭;
- gzip_http_version: 识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
- gzip_comp_level: 设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu
- gzip_min_length: 设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k
- gzip_types: 设置需要压缩的MIME类型,非设置值不进行压缩,即匹配压缩类型
https://cloud.tencent.com/doc...
https 在443端口
需要1.ssl_certificate: crt证书文件;2.ssl_certificate_key: key 私钥文件。放在nginx 文件夹下
在 conf.d 文件夹下新建一个ssl.conf 文件
# 以部署 cloud.tencent.com 为例子
# 证书: 1_cloud.tencent.com_bundle.crt
# 私钥: 2_cloud.tencent.com.key
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name cloud.tencent.com;
#证书文件名称
ssl_certificate 1_cloud.tencent.com_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站运行目录在/etc/www下,则填写/etc/www。
root html;
# 此处不用修改
indexindex.html index.htm;
}
}
http 重定向到 https
http在80端口
http:// cloud.tencent.com -> https:cloud.tencent.com
server {
listen 80;
#填写绑定证书的域名
server_name cloud.tencent.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
【前端应该掌握的nginx知识】}
- nginx 内置变量
$host:
$request_uri: 完整url中刨去最前面$host剩下的部分 - 301 跳转
- 前端工程化/前端开发者必备的nginx知识
推荐阅读
- 我们应该和什么样的人交朋友
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!
- 早知道你是只飞鸟,我就应该把你关起来
- 《老婆》
- 每天都应该是新的开始
- Jsr303做前端数据校验
- 年轻的我们应该享受还是奋斗()
- 新媒体时代,你需要掌握的必备技能
- 鹿鸣高级营养老师徐老师分享应该注意的6种食物
- 【挑战日更】Day6.《终身学习.10个你必须掌握的未来生存法则》摘录之三