0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nginx入门指南

阿铭linux 来源:阿铭linux 2023-01-07 09:53 次阅读

Nginx是由Igor Sysoev(俄罗斯人)为当地网站Rambler.ru所开发的一款高性能WEB 服务软件,第一个公开版本于2004年10月发布。一开始Nginx并不为人所知,后来由于它诱人的高并发架构、模块化设计、反向代理/负载均衡功能以及不少于Apache的多样化功能使得它越来越流行,使得它目前的市场占有率甚至要超过Apache。

Nginx官方网站,随着近些年Nginx使用量越来越高,它的版本迭代效率也是非常之高。在国内几乎所有的大型互联网企业都在使用Nginx,而阿里巴巴公司更是基于Nginx开发了它的一个分支版本Tengine。Nginx之所以非常流行得益于它的高并发特性,当然反向代理和负载均衡的功能也是各个企业使用Nginx作为WEB服务器的主要原因之一。 nginx作为HTTP服务器,专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核epoll模型,基于事件处理请求连接,从而能经受高负载的考验。有报告表明Nginx单机能支撑高达 50,000个并发连接数。

15.1 RHEL/Rocky 通过yum安装

1)编辑源

vi /etc/yum.repos.d/nginx.repo #内容如下

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2)安装

yum install -y nginx

3)启动

systemctl start nginx

15.2Ubuntu通过apt安装

1)安装依赖

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

2)导入官方key

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor 
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

3)设置源

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] 
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" 
    | sudo tee /etc/apt/sources.list.d/nginx.list

4)设置仓库优先级,保证优先使用Nginx官方的源

echo -e "Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900
" 
    | sudo tee /etc/apt/preferences.d/99nginx

5)安装

sudo apt update
sudo apt install nginx

6)启动

sudo  systemctl  start nginx

15.3 源码编译

1)下载源码

cd  /usr/local/src
sudo curl -O http://nginx.org/download/nginx-1.23.0.tar.gz

2)解压

sudo tar zxf nginx-1.23.0.tar.gz
cd nginx-1.23.0

3)安装依赖

## RHEL/Rocky
sudo yum install -y gcc  make  pcre-devel zlib-devel  openssl-devel
##ubuntu
sudo apt install  -y gcc  make  libpcre++-dev libssl-dev  zlib1g-dev

4)配置

sudo ./configure --prefix=/usr/local/nginx  --with-http_ssl_module

5)编译和安装

sudo make  && sudo  make install

6)编辑system服务管理脚本

sudo vi /lib/systemd/system/nginx.service  #写入如下内容
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
[Install]
WantedBy=multi-user.target

7)加载服务

sudo  systemctl daemon-reload

8)启动服务

sudo systemctl start nginx

15.4 Nginx常见配置

15.4.1 Nginx虚拟主机 一个Nginx服务下,可以配置多个虚拟主机,每一个虚拟主机代表着一个网站,我们可以使用域名来区分每一个虚拟主机。 虚拟主机在配置文件里,就是每一个server { }配置段,配置示例:

mkdir  /usr/local/nginx/conf/vhostsvi /usr/local/nginx/conf/vhosts/123.conf  #内容如下    server {        listen       8080;        server_name  www.123.com;        location / {            root   /tmp/123.com;            index  index.html index.htm;        }   }
在虚拟主机中有一个默认虚拟主机的概念,所谓默认虚拟主机就是任何域名解析过来,都会访问到那个虚拟主机里。相同端口的第一个虚拟主机为默认虚拟主机,还可以手动配置 default_server:
listen  80  default_server;
安全考虑,默认虚拟主机禁止访问,增加配置
deny all;

15.4.2 配置日志

日志分为错误日志和访问日志,如果Nginx服务出现问题,就需要查看错误日志来分析问题原因。而访问日志记录了用户访问Nginx服务的过程,访问日志会记录客户端IP、访问时间、访问目标大小、访问地址、客户端代理标识、客户端referer等信息,这些信息也可以自定义。 先来看错误日志,配置参数格式:error_log /path/to/log level。这个level指的是错误日志级别,常见的错误日志级别有debug | info | notice | warn | error | crit | alert | emerg。级别越高记录的信息越少,如果不定义,默认级别为error。当排查问题时,可能会调整错误日志级别,因为只有调整到可以输出更多信息的日志级别,才能看到想要的日志信息。 Nginx错误日志示例:

error_log  /var/log/nginx/error.log crit;
如果要想彻底关闭error_log,需要这样配置:
error_log /dev/null;
再来看访问日志access_log,关于访问日志,有一个log_format的配置,它用来定义访问日志的格式,也就是说通过这个日志格式来定义记录哪些信息,配置示例:
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    '$host "$request_uri" $status'
    '"$http_referer" "$http_user_agent"';

这个combined_realip就是日志格式的名字,可以在access_log配置段引用:

access_log  /data/logs/nginx/www.aminglinux.com-access.log combined_realip;

关于日志格式,各个变量的含义,阿铭给大家准备了一个表格:

变量 说明
$remote_addr 客户端(用户)IP地址
$status 请求状态码,如200,404,301,302等
$request 请求方式(GET或者POST等)+URL(包含$request_method,$host,$request_uri)
$http_user_agent 用户浏览器标识
$http_host 请求的url地址(目标url地址)的host
$host 等同于$http_host
$http_referer 来源页面,即从哪个页面转到本页,如果直接在浏览器输入网址来访问,则referer为空
$uri 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。
$document_uri 等同于$uri
$request_uri 比$uri多了参数,即$uri+$args
$http_x_forwarded_for 如果使用了代理,这个参数会记录代理服务器的ip和客户端的ip

15.4.3 日志切割

日志如果不做切割,那么会一直写,直到将整个磁盘写满。阿铭曾经遇到过一台Nginx服务器上没有配置日志切割,导致访问日志写了几百个G,这是非常不负责任的。

Nginx的日志切割可以借助Linux系统的logrotate服务来完成,你只需要写一个配置文件即可:

#假设Nginx的错误日志和访问日志,都放到了/data/logs/nginx/下
cat > /etc/logrotate.d/nginx </dev/null) 2>/dev/null
    endscript
}
EOF
说明:

daily表示每天切割

rotate 30表示日志保留30天

missingok表示忽略错误

notifempty表示如果日志为空,不切割

compress表示压缩

sharedscripts和endscript中间可以引用系统的命令

postrotate表示当切割之后要执行的命令

15.4.4 SSL配置

SSL也就是https,配置https只需要两行配置,但是需要我们提前准备一对SSL证书,这个证书可以申请一个免费的,也可以自签。如果你有自己的域名,建议去申请一个免费的证书,推荐https://freessl.cn。如果没有自己域名,那么就自签吧,具体步骤可以参考https://github.com/aminglinux/nginx/blob/master/ssl/key.md。

配置示例:

  server {
listen443ssl;
server_namewww.123.com;
ssl_certificatessl/server.crt;
ssl_certificate_keyssl/server.key;


location/{
             root   /tmp/123.com;
             index  index.html index.htm;
}
}
说明:

443端口为ssl监听端口。

ssl_certificate指定crt文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。

ssl_certificate_key指定key文件所在路径。

15.4.5 反向代理

Nginx在日常的工作中绝大多数都是作为反向代理在提供服务。比较典型的场景是:域名没有备案,可以把域名解析到香港一台云主机上,在香港云主机做个代理,而网站数据是在大陆的服务器上。 配置示例:

server
{
     listen 80;
     server_name aminglinux.com;


     location /
    {
         proxy_pass http://123.23.13.11/;
         proxy_set_header Host   $host;
         proxy_set_header X-Real-IP      $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
说明:proxy_pass后面跟的url就是被代理服务器的地址。下面的三个proxy_set_header是一个固定配置,一直带着便是。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10996

    浏览量

    206788
  • 服务器
    +关注

    关注

    12

    文章

    8134

    浏览量

    82615
  • nginx
    +关注

    关注

    0

    文章

    136

    浏览量

    11996

原文标题:Nginx入门

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Nginx 常见应用技术指南

    Nginx 常见应用技术指南
    发表于 09-07 14:42 6次下载
    <b class='flag-5'>Nginx</b> 常见应用技术<b class='flag-5'>指南</b>

    PSCOPE快速入门指南

    PSCOPE快速入门指南
    发表于 05-23 20:22 5次下载
    PSCOPE快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    Nginx开发从入门到精通

    nginx-book.zip
    发表于 04-20 11:12 0次下载
    <b class='flag-5'>Nginx</b>开发从<b class='flag-5'>入门</b>到精通

    Nginx如何监控

    搭建了Nginx集群后,需要继续深入研究的就是日常Nginx监控。
    的头像 发表于 08-22 10:03 1170次阅读

    TileLib 快速入门指南

    TileLib 快速入门指南
    发表于 03-13 19:14 0次下载
    TileLib 快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    超强大的Nginx可视化管理平台Nginx-Proxy-Manager中文入门指南

    今天给大家介绍一款 Nginx 可视化管理界面,非常好用,小白也能立马上手。
    的头像 发表于 04-13 10:42 4333次阅读

    瑞萨 R8C/2F 入门套件快速入门指南

    瑞萨 R8C/2F 入门套件快速入门指南
    发表于 04-27 19:07 0次下载
    瑞萨 R8C/2F <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨入门套件 LCD 应用板快速入门指南

    瑞萨入门套件 LCD 应用板快速入门指南
    发表于 04-28 18:44 0次下载
    瑞萨<b class='flag-5'>入门</b>套件 LCD 应用板快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    Renesas 7542入门套件快速入门指南

    Renesas 7542 入门套件快速入门指南
    发表于 04-28 19:42 0次下载
    Renesas 7542<b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨 3803L 入门套件快速入门指南

    瑞萨 3803L 入门套件快速入门指南
    发表于 04-28 19:42 0次下载
    瑞萨 3803L <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨 38D5 入门套件快速入门指南

    瑞萨 38D5 入门套件快速入门指南
    发表于 04-28 19:43 0次下载
    瑞萨 38D5 <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    Nginx常用的配置和基本功能讲解

    Nginx 已经广泛应用于 J-one 和 Jdos 的环境部署上,本文对 Nginx 的常用的配置和基本功能进行讲解,适合 Nginx 入门学习。
    的头像 发表于 05-04 10:25 424次阅读

    TileLib 快速入门指南

    TileLib 快速入门指南
    发表于 07-04 20:32 0次下载
    TileLib 快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    LABVIEW与CRIO入门指南

    LABVIEW与CRIO入门指南
    发表于 07-26 18:17 8次下载

    HyperLynx入门指南

    HyperLynx入门指南
    发表于 05-06 10:17 0次下载