Nginx快速上手~

我会带着你远行 2024-03-23 13:29 189阅读 0赞

#

注:本文针对官网的快速入门教程进行一个中文的解释,以帮助英文阅读能力较差的学习者快速上手

参考官网连接Beginner’s Guide (nginx.org)

Centos下的安装

  1. sudo yum install yum-utils
  2. # 创建文件
  3. vim /etc/yum.repos.d/nginx.repo
  4. # 输入以下内容
  5. ####
  6. [nginx-stable]
  7. name=nginx stable repo
  8. baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
  9. gpgcheck=1
  10. enabled=1
  11. gpgkey=https://nginx.org/keys/nginx_signing.key
  12. module_hotfixes=true
  13. [nginx-mainline]
  14. name=nginx mainline repo
  15. baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
  16. gpgcheck=1
  17. enabled=0
  18. gpgkey=https://nginx.org/keys/nginx_signing.key
  19. module_hotfixes=true
  20. ####
  21. # 进行安装
  22. sudo yum install nginx
  23. 复制代码

若其他操作系统的安装请参考官网Installing nginx

nginx介绍

nginx可用于提供静态内容,做代理服务器……

nginx由一个主进程和几个工作进程组成,主线程的目标是去读取配置并管控工作线程,工作线程处理实际的请求。

nginx的运行模式由配置文件进行控制,配置文件名为nginx,一般情况下被放置在/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx.

启动、停止和重新载入配置

启动nginx通过

  1. nginx
  2. 复制代码

查看运行的nginx进程

  1. ps -ef | grep nginx
  2. # 结果
  3. root 13329 1 0 10:00 ? 00:00:00 nginx: master process nginx
  4. nginx 13330 13329 0 10:00 ? 00:00:00 nginx: worker process
  5. nginx 13331 13329 0 10:00 ? 00:00:00 nginx: worker process
  6. root 13342 10141 0 10:00 pts/1 00:00:00 grep --color=auto nginx
  7. 复制代码

启动nginx之后,可以通过以下的格式来控制ngnix了

  1. nginx -s [signal]
  2. 复制代码

signal有以下的取值

  • stop — 快速关闭
  • quit — 和平的方式进行关闭 (工作线程会继续服务当前正在请求的线程)
  • reload — 重新载入配置

    • 主进程读入配置,并检查语法的正确性
    • 成功之后,主进程会通知工作线程关闭,并不再接受新的请求
    • 工作线程仍会处理当前的请求,再进程关闭
  • reopen — 重新打开日志文件

配置文件的结构

配置文件由指令构成,指令分为简单指令和块指令。

简单指令由空格分开的name和parameters组成,以分号作为结束

name parameters;

块指令的结构类似于简单指令,但它不是以分号结尾,而是以一组用大括号 { 和 } 括起来的附加指令结尾。如果块指令在大括号内包含其他指令,则它被称为上下文 (context)。如下

  1. http {
  2. server {
  3. ...
  4. }
  5. }
  6. 复制代码

配置文件中放置在任何上下文之外的指令都被认为是在主上下文中eventshttp 指令在主上下文中server 指令在 http 上下文, location指令在 server 上下文。

使用#作为注释

对外提供静态内容(提供网页服务)

首先定义想要提供的静态资源,例如在/data/www中定义index.html页面,index.html中写入以下内容

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>nginx学习</title>
  8. </head>
  9. <body>
  10. <h1>欢迎学习nginx</h1>
  11. </body>
  12. </html>
  13. 复制代码

修改/etc/nginx/nginx.conf中的配置文件,注释掉原有的http块指令,添加添加以下内容

  1. http {
  2. server {
  3. listen 80;
  4. server_name localhost;
  5. location / {
  6. root /data/www;
  7. }
  8. }
  9. }
  10. 复制代码

上面这些配置是什么意思呢,http代表响应http请求,server被称为虚拟主机,用于响应http请求。location用于定义响应内容的匹配规则。

请求到达后,对应location的匹配规则是这样的,对location后面的路径进行匹配,找到最长前缀匹配的location,将对应location的root的路径拼接进URI中,最后在文件系统中查找对应的位置

例如:

对于http://localhost:80/index.html则会匹配到/data/www/index.html文件

对于http://localhost:80/images/a.png则会匹配到/data/www/images/a.png文件

最后启动一下nginx试试

  1. nginx
  2. 复制代码

如果配置未生效

继续执行

  1. nginx -s reload
  2. 复制代码

最终的到自定义的页面了

format_png

设置一个简单的代理服务器

在配置文件中设置

  1. http {
  2. # 监听8080端口的服务器,将URI映射到/data/up1中
  3. server {
  4. listen 8080;
  5. root /data/up1;
  6. location / {
  7. }
  8. }
  9. # 代理服务器
  10. server {
  11. location / {
  12. proxy_pass http://localhost:8080/; # 代理路径
  13. }
  14. # 将以gif,jpg,pnf结尾的URI映射到本地/data/images文件系统
  15. location ~ \.(gif|jpg|png)$ { # 以~开头的为正则表达式
  16. root /data/images;
  17. }
  18. }
  19. }
  20. 复制代码

最终启动即可。

发表评论

表情:
评论列表 (有 0 条评论,189人围观)

还没有评论,来说两句吧...

相关阅读

    相关 markdown快速

    > markdown真的是简洁高效,,5分钟,快速上手markdown! -------------------- 首先,来安利一个软件[Typora][],强大不需要理由