【Nginx安装】CentOS7安装Nginx及配置[通俗易懂]

【Nginx安装】CentOS7安装Nginx及配置[通俗易懂]Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。**它最常的用途是提供反向代理服务。**安装在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接下载安装包的方法,**以下命令均需root权限执行**:首先安装必要的库(nginx中gzip模块需要zli…

大家好,又见面了,我是你们的朋友全栈君。


   Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。**它最常的用途是提供反向代理服务。**

安装


   在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接下载安装包的方法,**以下命令均需root权限执行**:
   首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库)。选定**/usr/local**为安装目录,以下具体版本号根据实际改变。

1.安装gcc gcc-c++(如新环境,未安装请先安装)

$ yum install -y gcc gcc-c++ 

2.安装PCRE库

$ cd /usr/local/ $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz $ tar -zxvf pcre-8.36.tar.gz $ cd pcre-8.36 $ ./configure $ make && make install 如报错:configure: error: You need a C++ compiler for C++ support 解决:yum install -y gcc gcc-c++ 

3.安装SSL库

$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install

4.安装zlib库存

$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ ./configure
$ make && make install


4.安装nginx

$ cd /usr/local/ $ wget http://nginx.org/download/nginx-1.8.0.tar.gz $ tar -zxvf nginx-1.8.0.tar.gz $ cd nginx-1.8.0 $ ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module (注: --with-http_ssl_module:这个不加后面在nginx.conf配置ssl:on后,启动会报nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常) $ make && make install 报错:./configure: error: the HTTP gzip module requires the zlib library 

在–prefix后面接以下命令:

--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。 

点击此处下载安装脚本

5.启动

$ /usr/local/nginx/sbin/nginx

检查是否启动成功:

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

部分命令如下:
重启:

$ /usr/local/nginx/sbin/nginx –s reload

停止:

$ /usr/local/nginx/sbin/nginx –s stop

测试配置文件是否正常:

 $ /usr/local/nginx/sbin/nginx –t

强制关闭:

$ pkill nginx 

配置


以上安装方法nginx的配置文件位于

/usr/local/nginx/conf/nginx.conf
Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

Server

接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,在 nginx 中我们可以通过构建虚拟主机(server)的概念来将这些不同的服务配置隔离。

server {

listen 80;
server_name localhost;
root html;
index index.html index.htm;
}

例如我们笔戈玩下的两个子项目 passport 和 wan 就可以通过在 nginx 的配置文件中配置两个 server,servername 分别为 passport.bigertech.com 和 wan.bigertech.com。这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上。
这里的 listen 指监听端口,server_name 用来指定IP或域名,多个域名对应统一规则可以空格分开,index 用于设定访问的默认首页地址,root 指令用于指定虚拟主机的网页跟目录,这个地方可以是相对地址也可以是绝对地址。
通常情况下我们可以在 nginx.conf 中配置多个server,对不同的请求进行设置。就像这样:

server {

listen 80;
server_name host1;
root html;
index index.html
index.htm;
}
server {

listen 80;
server_name host2;
root /data/www/html;
index index.html index.htm;
}

但是当 server 超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,然后通过在主配置文件 nginx.conf 加上 include 指令包含进来。更便于管理。

include vhosts/*.conf;

就可以把vhosts的文件都包含进去啦。

Localtion
每个 url 请求都会对应的一个服务,nginx 进行处理转发或者是本地的一个文件路径,或者是其他服务器的一个服务路径。而这个路径的匹配是通过 location 来进行的。我们可以将 server 当做对应一个域名进行的配置,而 location 是在一个域名下对更精细的路径进行配置。

以上面的例子,可以将root和index指令放到一个location中,那么只有在匹配到这个location时才会访问root后的内容:

location / {

   root /data/www/host2; 
   index index.html index.htm; 

}

location 匹配规则

~ 波浪线表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配

匹配例子:

location = / {

# 只匹配”/”. [ configuration A ]
}
location / {

# 匹配任何请求,因为所有请求都是以”/”开始 # 但是更长字符匹配或 者正则表达式匹配会优先匹配 [ configuration B ]
}
location ^~ /images/ {

# 匹配任何以 /images/ 开始的请求,并停止匹配 其它
location [ configuration C ]
}
location ~* .(gif|jpg|jpeg)$ {

# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}
请求:/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D

静态文件映射
访问文件的配置主要有 root 和 aliasp’s 两个指令。这两个指令的区别容易弄混:
alias
alias后跟的指定目录是准确的,并且末尾必须加 /。

location /c/ {

alias /a/;
}

root
root后跟的指定目录是上级目录,并且该上级目录下要含有和location后指定名称的同名目录才行。

location /c/ {

root /a/;
}

如果你需要将这个目录展开,在这个location的末尾加上「autoindex on; 」就可以了

转发
配置起来很简单比如我要将所有的请求到转移到真正提供服务的一台机器的 8001 端口,只要这样:

location / {

proxy_pass 172.16.1.1:8001;
}

这样访问host时,就都被转发到 172.16.1.1的8001端口去了。

负载均衡

upstream myserver; {

ip_hash;
server 172.16.1.1:8001;
server 172.16.1.2:8002;
server 172.16.1.3;
server 172.16.1.4;
}
location / {

proxy_pass http://myserver;
}

我们在 upstream 中指定了一组机器,并将这个组命名为 myserver,这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 ip_hash 指明了我们均衡的方式是按照用户的 ip 地址进行分配。另外还有轮询、指定权重轮询、fair、url_hash几种调度算法。

总结

以上是最简单的通过 nginx 实现静态文件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,比如当我们配置 upstream 时是用 upstream 模块,而 server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的模块文档中找到详细的配置说明。

作者:wiseap

链接:https://www.jianshu.com/p/9a6c96ecc8b8

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138558.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 私有IP地址_ipv6私有地址

    私有IP地址_ipv6私有地址私有IP地址:在ABC三类网络中,如下三段网络地址为私有IP地址,如何人都可以自行在自己的局域网中使用这些IP地址.A类私有:10.0.0.110.255.255.254B类私有:172.16

    2022年8月5日
    13
  • pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗

    pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗今天刚配置完python和opencv的环境,发现在PowerShell上能成功使用OpenCV,并且输入importcv2后无错误出现,如下图:但在PyCharm上编写完程序后,会出现“ModuleNotFoundError:Nomodulenamed‘cv2’”的错误。在观看众多的博客后,从这篇博客中受益良多(https://blog.csdn.net/qq_25603827/article/details/84556416),最终发现了问题解决方法。根本问题在于你没有把python环境变

    2022年8月25日
    8
  • android root权限注册,Android 取得root权限的方法

    android root权限注册,Android 取得root权限的方法Android 取得 root 权限的方法 Ontheemulato youcangetaro adbshell fromyourhost Onceyouhaves youcatfollow

    2025年8月28日
    3
  • 百度快照更新周期、百度收录更新时间[通俗易懂]

    百度快照更新周期、百度收录更新时间[通俗易懂]很多做SEO的都不清楚百度快照的更新周期,所以很多时候都不能有针对性的对网站进行操作,错过了很多机会。百度收录的更新日期一般是每个月的11号和26号,特别是26号,更新最大,但K站也是最多的。另外百度也有一个小的更新的日期,即每周四凌晨4点左右,对网站的访问量没有什么效果,只有到了中午的日期,百度对网站关键字的搜索停止重新调整之后,才会有访问量上的大的变化,有升有降。总体上来说是大致为一个

    2022年9月27日
    1
  • 交换机基础配置教程[通俗易懂]

    交换机基础配置教程[通俗易懂]一、带外管理网络的管理控制信息与用户网络的承载业务信息在不同的逻辑信道传送,也就是设备提供专门用于管理的宽带console口:专门用来管理的,并不传输数据,接入一根console线,是一个扁平电缆,另外一端是一个串行接口,用来接入电脑或笔记本上,近端管理时我们会使用console线进行近端管理,设备要做密码恢复时,时必须要进行近端管理的,只有通过console空才能进行密码恢复。以太网口:以太网口用来传输数据管理信息和数据传输是隔离的,所以我们称之为带外管理初次配置:通过console口进行配置,需

    2022年9月15日
    4
  • tomcat部署war包出错解决方案

    tomcat部署war包出错解决方案tomcat部署war包出错解决方案,最最简单直接明了的方法,卸载重新再装一遍笔者重装了56遍算是整好了,写篇博客,希望你萌,少走弯路。这是我走的弯路https下载,安装,配置及部署war包出错解决方案1.jdk的安装及配置2,tomcat安装配置3.部署war包3.1将war包放入Tomcat中3.2修改server.xml4启动tomcat4.1war包的数据库密码与本地数…

    2022年6月8日
    102

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号