前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx入门学习

Nginx入门学习

原创
作者头像
Johnson木木
修改于 2020-06-17 02:18:31
修改于 2020-06-17 02:18:31
3420
举报
文章被收录于专栏:猿小俊猿小俊

简介

nginx 是HTTP和反向代理服务器,邮件代理服务器和通用TCP/UDP代理服务器。总之一句话,nginx很火很牛逼就对了。

download

下载地址:http://nginx.org/en/download.html

mainline:最新版本

stable:稳定版本

下载命令:

代码语言:txt
AI代码解释
复制
wget [下载地址]
tar -zxvf [压缩包]

目录介绍

auto:辅助configure文件的执行 CHANGES:不同版本的特性 conf:示例文件 configure:用于生成中间文件,执行编译前的必须动作 contrib:vim nginx文件时显示的样式,用法 cp contrib/vim/* ~/.vim/ html::nginx的默认html文件 man:nginx的帮助文件 src:nginx源代码

安装

.configure --xxx

--prefix=PATH nginx安装目录的前缀undefined--with-xxx 默认不会编译进nginx,需要则写到命令行 --without-xxx 默认编译进nginx,不需要则写到命令行

最普通的configure编译命令为

.configure --prefix=/usr/local/nginx

执行完命令则生成objs目录,存放中间文件,objs/ngx_modules.c 文件决定哪些模块安装到nginx。

make编译:make,执行完后生成大量的中间文件,都会存放到objs/src目录中。

安装:make install

Nginx命令行

-c 指定配置文件 -g 指定配置的指令 -p 指定运行目录 -s stop 立刻停止服务; quit 优雅的停止服务;reload 重载配置文件;reopen 重新开始记录日志文件 -t 测试配置文件语法是否有错误 -v 版本信息

重载配置文件

修改nginx配置文件的内容后,需要nginx重新加载配置文件

代码语言:txt
AI代码解释
复制
nginx -s reload

热部署

nginx正在运行的时候,此时需要升级nginx版本。只需要更新nginx二进制文件。

先备份旧的nginx:

代码语言:txt
AI代码解释
复制
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

使用最新的nginx二进制文件 替换掉正在使用的nginx二进制文件。

代码语言:txt
AI代码解释
复制
cp -r nginx /usr/local/nginx/sbin/ -f

查看正在运行的nginx的master进程

代码语言:txt
AI代码解释
复制
ps -ef | grep nginx

告诉正在运行nginx的master,需要进行nginx升级

代码语言:txt
AI代码解释
复制
kill -USR2 [正在运行的nginx master进程ID]

执行完命令后会启动新的nginx进程,然后告知旧的nginx master进程,请优雅的关闭所有旧的worker进程

代码语言:txt
AI代码解释
复制
kill -WINCH [旧的nginx master进程ID]

然后会发现旧的nginx worker进程已经全部关闭,发现master进程还在。如果新的nginx版本发生的错误,可以回退到旧的nginx master进程中,执行nginx -s reload会回退到旧版本

日志切割

代码语言:txt
AI代码解释
复制
# 先把日志文件先备份
mv access.log access_bak.log

# 进行日志切割,执行完命令会重新生成access.log 文件
nginx -s reopen

一般情况下会后台做一个bash脚本,定时进行日志切割。

静态资源服务器

nginx 配置

代码语言:txt
AI代码解释
复制
# 日志格式,main为日志格式命名
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"'; 
    
gzip on; # 对文件进行压缩传送
gzip_min_length 1; # 小于 1 字节则不进行压缩。
gzip_comp_level 2; # 压缩级别
gzip_types image/jpeg image/gif; # 对这些文件才进行压缩

server {
    listen 80; # 监听端口
    server_name localhost; # 域名
    
    # 记录access_log日志(每一个请求都会记录), 使用main的log_format进行记录
    access_log /logs/blog.log main; 

    # url匹配的路径
    location / { 
        alias  code/; # 指 nginx的安装目录下 eg:/usr/local/nginx/code
        # autoindex on; # 共享静态资源
        # set $limit_rate 10k; # nginx每秒传输 10k字节 到浏览器当中
    }
}

具备缓存功能的反向代理服务

可以建立多个上游服务,当有请求进来的时候,nginx可以根据负载均衡算法代理给多台上游服务器工作。nginx配置

代码语言:txt
AI代码解释
复制
# 上游服务
# local 为上游服务器名
upstream local {
     # 其中一台上游服务器,可以配置多台
     # 127.0.0.1:8080 代表只有本机能访问8080端口
    server 127.0.0.1:8080; 
}

# 反向代理缓存    缓存路径                   内存关键字,10m
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g;
inactive=60m use_temp_path=off;

server {
    listen 80;
    server_name colablog.cn; # 域名
    
    # 记录access_log日志(每一个请求都会记录), 使用main的log_format进行记录
    access_log /logs/blog.log main; 

    # url匹配的路径
    location / { 
        # doc http://nginx.org/en/docs/http/ngx_http_proxy_module.html
        # proxy_set_header 反向代理服务器把客户端请求的信息,设置到请求头中发送到上游服务
        proxy_set_header Host $host; # 域名
        proxy_set_header X-Real-IP $remote_addr; # 客户端地址
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # 使用哪个缓存,对应上面的keys_zone
        proxy_cache my_cache;
        # 缓存的路径
        proxy_cache_key $hots$uri$is_args$args;
        # 对于这些响应不缓存
        proxy_cache_valid 200 304 302 1d;
    
        # 代理到上游服务
        proxy_pass http://local;
    }
}

GoAccess可视化实时监控access日志

安装

你可以快速使用 apt install或者 yum install,也可以在官网中查看编译安装的方式。

运行goaccess命令

代码语言:txt
AI代码解释
复制
# goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --real-time-html --time=format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED

--real-time-html 代表实时更新页面

nginx.conf配置文件

代码语言:txt
AI代码解释
复制
    # 日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

    server {
        listen 80;
        server_name: localhost;
        # 日志记录
        access_log logs/access.log main;
        
        # 指定页面
        location /report.html {
            alias /usr/local/nginx/html/report.html;
        }
    }

然后访问 http://localhost/report.html,就可以看到下面这么高大上的界面了。

nginxaccesslog.jpg
nginxaccesslog.jpg

SSL

如果你有域名的话,只需要两行命令可以快速把你的 http://域名 变成 https://域名。

ubuntu版本下

代码语言:txt
AI代码解释
复制
apt install python-certbot-nginx

centos版本下

代码语言:txt
AI代码解释
复制
yum install python2-certbot-nginx

使用certbot命令帮我们下载证书和自动配置好nginx.conf,

代码语言:txt
AI代码解释
复制
certbot --nginx --nginx-server-root=/usr/local/nginx/conf/ -d [你的域名]

执行了上面的命令后会有两个选项,第一个选项是可以访问http或者https,不会进行重定向;而第二个选项则是访问http的时候重定向到https中。

就这样就搞定了,是不是很简单。

总结

Nginx初次入门的小白,文章若有错误的地方,请用力的指出。

参考文章:极客时间:Nginx核心知识100讲

个人博客网址: https://colablog.cn/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx配置文件nginx.conf全解
nginx配置文件nginx.conf的配置http、upstream、server、location等;
青山师
2023/05/05
7530
【Nginx】nginx简单入门,nginx负载均衡
配置好了之后,执行 nginx -t 检查配置是否有错,出现下面的提示则没有错误,有错误会写出错误多少行的
Alone88
2019/10/22
1.9K0
【Nginx】nginx简单入门,nginx负载均衡
Nginx的入门
正向代理(forward proxy) ,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。
HUC思梦
2020/09/03
3.7K0
Nginx的入门
GoAccess: 实时分析Nginx日志的轻量级工具
十多年前我曾使用GoAccess搭建了一个NGINX日志分析工具,它以其轻量级、低资源消耗和实时更新的特性,非常适合个人和小站点使用。最近我的服务器做了次搬家,需要重新搭建日志分析系统,于是到网上查找GoAccess的用法时,发现官方站点的文档还是一如既往的晦涩,而其他站点介绍的用法则与我要搭建的架构不契合。所以干脆做了次总结,在这篇文章中,我将分享我如何搭建GoAccess,并使其通过Websocket协议提供实时日志分析。我的架构部署图如下所示:
陶辉
2024/09/06
8470
GoAccess: 实时分析Nginx日志的轻量级工具
给小白的Nginx入门指南-30分钟从小白到专家
h以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结。趁最近有时间,打算将Nginx相关的内容重新整理一下。
章为忠学架构
2021/07/01
7.7K0
nginx安装和配置详解
nginx下载地址:http://nginx.org/en/download.html Windows直接选择合适的版本下载,解压后双击nginx.exe执行,访问http://localhost即可 Linux下载安装可以查看我这篇文章:Linux下安装和使用Nginx
共饮一杯无
2022/11/28
8540
Nginx 原理解析和配置摘要
前言 Nginx 作为高性能的 http 服务器,知名度不必多言,相似产品中无出其右。本篇随笔记录我认为较为重要的原理和配置。 1. 原理解析 1.1 结构 以上是 Nginx 的结构图,其包
捷义
2018/05/14
1.1K0
深入解析Nginx配置文件
Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于各类Web服务器。作为一名测试工程师,了解Nginx配置文件的细节有助于更好地进行测试和优化服务器性能。本文将详细介绍Nginx配置文件的结构及其主要配置项。
霍格沃兹测试开发Muller老师
2024/06/19
1.8K0
第一章·Nginx Web快速入门-基础
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2760
第一章·Nginx Web快速入门-基础
Nginx(2)——通用配置
user 设置Nginx服务的系统用户 worker_processes 工作进程数 和硬件CPU核数一致 error_log nginx的错误日志 pid nginx服务启动时候pid woker_connections 每个进程允许最大连接数 use 内核模型select epoll
羊羽shine
2019/05/29
4900
CentOS7安装维护nginx从入门到精通
Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异步事件模型,削减上下文调度的开销,提高服务器并发能力。采用了模块化设计,提供了丰富模块的第三方模块。
小弟调调
2018/09/11
1.8K0
Nginx从入门到实战,一学就会!
Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。本文的作者为「静默虚空」 ,可点击文章底部的阅读原文关注作者博客。
Bug开发工程师
2018/09/21
6360
Nginx从入门到实战,一学就会!
Nginx配置文件功能注释
最近在学配置Nginx做均衡负载,首先最重要的是Nginx的配置文件,参考网上查到的资料,并结合实践, 将该配置文件的详细功能注释在这里做下笔记,方便今后查阅。 官方的Nginx Wiki(英文)   http://wiki.nginx.org/Configuration 环境:FreeBSD8.0+Nginx1.0.10_1 配置文件位置:   /usr/local/etc/nginx(所有配置文件都在此文件夹) 可执行文件位置: /usr/local/sbin/nginx 服务所在位置:   /usr/
joshua317
2018/04/16
1.4K0
LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
  首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来;这里表示抱歉了!
青石路
2018/09/10
1.2K0
LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
Nginx详解-入门
第【67篇】文章,每一篇都是亲自实践后的总结,只希望能够帮助都有需要的人。"莫愁前路无知己、天下谁人不识君"
IT学习日记
2022/09/13
5450
Nginx Web快速入门
作用环境: 1、常用多端口和多host主机方式 2、多端口常用来做测试和内部访问 3、host主机方式 针对用户提供访问
用户7741497
2022/03/24
2710
Nginx实例与localtion匹配规则
〇、官方手册 一、反向代理 docker run --name nginx -d -p 80:80 -v /nginx/html:/usr/share/nginx/html -v /nginx/nginx.conf:/etc/nginx/nginx.conf nginx 下面为容器的端口!!!!!! # 运行用户 #user nobody; # 启动进程,通常设置成和cpu数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.lo
wuweixiang
2019/03/12
9400
『学习笔记』Nginx日志分析与性能调优
🎈今日推荐——https://cloud.tencent.com/developer/article/2472042
数字扫地僧
2024/11/29
4040
谷粒商城Nginx代理网关
首先需要在C:\Windows\System32\drivers\etc中的host文件下加入
一个风轻云淡
2023/10/15
3720
windows上 nginx 配置代理服务,配置多域名,以及最简单实现跨域配置
本文介绍了Nginx如何实现反向代理,以及通过反向代理实现跨域的解决方案。通过配置Nginx,可以将本地服务映射到公网,实现域名访问,并利用Nginx的配置文件,实现请求转发、服务器端包括真实服务器和负载均衡,从而完成跨域请求的处理。
哎_小羊
2018/01/02
5.9K0
相关推荐
Nginx配置文件nginx.conf全解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档