Nginx从安装到入门,基础篇

作为一个前端开发人员,懂点服务器端的知识也是必不可少的,毕竟,我们可不想为了做一个简单的测试还得去麻烦别人,自给自足,没什么不好。如果你有时间和精力,向全栈迈进也未尝不可。

我最近正在做一个仿iOS端微信的聊天App-WChat,从前端到后台,全都是靠自己来实现。所以最近也接触了一些服务器知识,后面还准备了一篇关于Node.js的文章。该项目的WebSocket是通过Node.js来实现的,后期的数据请求可能也是基于Node.js实现。

Nginx介绍

Nginx(engine x)是一个高性能的HTTP服务器(其实不止HTTP服务器),一般主要用作负载均衡反向代理(如果你不清楚什么是反向代理,可以阅读我的另一篇文章)。

Nginx有一个主进程和很多工作进程,主进程的作用只有一个:通过读取配置文件(nginx.conf)来维持工作进程正常工作。工作进程对应的才是实际的请求(request),Nginx会自动将客户端的请求高效的分发给工作进程。工作进程的数量在配置文件中定义,或者通过CPU的核心数自动调整。(可参考官方文档

在Linux系统下,Nginx的配置文件默认在/usr/local/nginx/conf/nginx.conf/etc/nginx/nginx.conf/usr/local/etc/nginx/nginx.conf中。我是在CentOS系统下使用的Nginx,本篇就基于CentOS来介绍。

Nginx安装

对于Nginx的安装,官方的文档在这里,建议参阅官方说明(比较考验英文)。我是一路上踏过很多坑才把Nginx安装好(主要是由于Nginx版本和Linux版本都在不断更新,而百度出来的大多数教程都是过时的,或多或少都会有些问题)。

yum安装

推荐使用yum来安装,简单省事。官方链接

方法很简单,首先创建/etc/yum.repos.d/nginx.repo文件,然后写入以下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

其中的OS是你的Linux版本,我的是centos,直接替换就好。OSRELEASE是版本号,6.x就写6,7.x就写7。比如我的baseurl就是http://nginx.org/packages/centos/6/$basearch/

然后就可以直接使用yum install -y nginx命令来一建安装,搞定。

通过yum安装的Nginx的配置文件可能位于/etc/nginx/nginx.conf

源码安装

不推荐使用这种方法,对于新手来说太折腾了。首先要安装依赖包:gccg++PCREzlibopenSSL

安装依赖

  • 安装gccg++,用来编译源码;
$ yum install -y gcc gcc-c++
  • PCRE,Perl正则表达式;
$ yum install pcre pcre-devel
  • zlib,gzip压缩;
$ yum install zlib zlib-devel
  • OpenSSL,SSL协议。
$ yum install openssl openssl-devel

如果你爱折腾,这些依赖包也可以下载源码,通过编译来安装。这里最头疼的就是版本之间的差异,涉及到的依赖包太多,有时候版本之间就会不兼容,或者需要其他的一些配置。

安装Nginx

官网下载Nginx,最好不要下载最新版本,如果最新版本跟网上大多数教程说的有差异的话,真的很折腾人。

Linux下命令行操作:

# 下载源码
$ wget http://nginx.org/download/nginx-1.13.0.tar.gz

# 解压源码
$ tar xvf nginx-1.13.0.tar.gz

# 进入源码目录
$ cd nginx-1.13.0
# 配置、编译、安装
$ ./configure
$ make
$ make install

如果顺利的话,Nginx就已经安装完成啦。如果不顺利的话,就自行百度去或直接采用上面介绍的yum来安装。./configure命令可以带很多参数进行配置,我记不住那么多,需要的话还是自行百度。

这就是安装Nginx大概的流程,先安装依赖,再安装Nginx。不同系统不同版本之间可能会有差异,按照上面的方法你也不一定会成功。起初我在./configure这一步就总是失败,就算带上详细的参数(--sbin-path之类的)也是失败。

Nginx基本使用

如果你已经成功安装Nginx,那么你现在直接在命令行中敲入nginx,然后回车,即可启动Nginx服务器。这时,你就可以在客户端输入你服务器的IP地址,就可以访问服务器默认的页面了。

启动、停止、重新加载配置信息

启动Nginx之后,你就可以使用下面的命令格式进行简单的操作了。

$ nginx -s signal

其中,signal可以是以下指令:

  • stop:关闭Nginx,会立刻终止所有的客户端请求。
  • quit:关闭Nginx,直接翻译过来就是优雅的关闭。它会等当前所有的请求完成之后再关闭Nginx。
  • reload:重新加载配置文件。一般当你修改配置文件后,使用它可以让修改的配置生效。
  • reopen:重新打开日志文件,目前还没用到它。

官方还介绍了通过kill指令来向Nginx进程发送这些操作信号。

配置文件简单说明

打开配置文件vim /usr/local/nginx/conf/nginx.conf,文件结构大致如下:

http {
    server {
        listen  80;
        server_name www.mohng.com;
        
        location / {
            root    html;
            index   index.html index.htm;
        }
        
        location /wchat {
            root    html;
            index   index.html;
        }
    }
    
    server {
        listen  8080;
        serer_name  mail.mohng.com;
        
        location / {
            index index.html;
        }
    }
}

其中,一个server就相当于一个服务器,你可以配置多个server模块来虚拟多个服务器。listen表示该服务器监听哪个端口,默认是80端口。server_name表示匹配主机名,比如我的server_namewww.mohng.com,那么,当客户端通过域名www.mohng.com(前提是该域名已经正确解析到该服务器的IP地址)来访问的时候,就是匹配到这个服务器。如果客户端通过域名mail.mohng.com:8080来访问的时候,就会匹配到下面那个服务器。如果你通过IP直接访问,会默认访问第一个服务器。

location就是匹配的路由,root是返回给客户端资源文件的根目录,它是相对nginx路径的,也可以指定绝对路径(比如:/usr/local/nginx/www)。index就是默认返回的文件名(比如index.htmlindex.phpindex.asp等)。

配置简单的反向代理服务器,只需在匹配到的路由location模块中,使用proxy_pass来转到真实的服务器。

location / {
    proxy_pass http://www.baidu.com;
}

更多配置文件的详细说明请参阅官方文档

总结

其实,Nginx本身不难,难的是操蛋的英文。现在大多数工具、框架、技术文档,都是大篇大篇的英文,看起来实在痛苦。就比如ReactVue,我相信在国内,学好Vue比学好React要容易的多吧。

不管什么东西,最好的学习途径还是官方文档,毕竟,官方的文档永远都是最新的。就拿webpack来说,现在网络上大部分教程都还是基于1.x的,如果直接拿来在2.x中使用全是坑。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容