栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于HTTP的Nginx安装和基础配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于HTTP的Nginx安装和基础配置

Nginx的安装

我们有了很多语言的后端服务,为什么还需要Nginx呢?Nginx是目前使用最多的Web服务器,主要实现的是HTTP的相关功能Nginx是一个非常纯粹的HTTP协议实现的服务,并不针对业务逻辑的开发Nginx的主要功能是用于HTTP的代理,主要提供:load balancing, caching, cloud deployments等功能可使用lua来扩展相关功能windows平台下载地址:https://nginx.org/en/download.htmlmac平台安装:通过Homebrew, $ brew install nginx 会默认安装在 /usr/local/nginx/sbin

或者通过https://nginx.org/en/download.html 下载,之后顺序执行

$ ./configure$ install$ make install$ /usr/local/nginx/sbin/nginx -v 进入安装目录,或者配置好环境变量,启动nginx

Mac环境:$ cd /usr/local/nginx/sbin & sudo ./nginxWindows环境:$ ./nginx.exe 访问 http://localhost 可以看到 Welcome to nginx! 的欢迎语,这样就成功启动了成功之后,就可以修改配置,用nginx来代理我们自己开发的服务同样的, 检查,重启和关闭

检查 $ ./nginx -t重启 $ ./nginx -s reload关闭

查询nginx主进程号:$ ps -ef|grep nginx正常关闭 $ sudo kill -QUIT 主进程号快速关闭 $ sudo kill -TERM 主进程号 nginx的相关功能

我们使用nginx一般是来做代理功能和缓存功能,并且可以篡改HTTP请求内容我们要知道代理缓存是如何工作的,以及什么是HTTP代理在nginx/conf目录中,有一个nginx.conf文件,它是nginx配置的主文件

在这个配置文件中,可以 include servers/*.conf 来启动所有配置当有新的站点需要创建时候,可以为其单独创建新的文件每个新站点可以有效的隔离管理include是常用的指令,用于导入一些配置这里加单举例说明,如:servers/test.conf

server {
    listen          80;
    server_name     test.com;

    location / {
        proxy_pass  http://127.0.0.1:8000;
        proxy_set_header Host $host;
    }
}

server {
    listen          80;
    server_name     a.test.com;

    location / {
        proxy_pass  http://127.0.0.1:8000;
        proxy_set_header Host $host;
    }
}

server {
    listen          80;
    server_name     b.test.com;

    location / {
        proxy_pass  http://127.0.0.1:8000;
        proxy_set_header Host $host;
    }
}
同时,本地也要进行一些host的配置, 比如在Mac上$sudo vi /etc/hosts
http://127.0.0.1       test.com
http://127.0.0.1       a.test.com
http://127.0.0.1       b.test.com
其主要功能是在本地开启三个代理

server 表示在本地开启一个服务listen 80 表示监听80端口server_name 表示在浏览器中访问的host name

它会根据访问的host name,来判断把服务启动在什么地方,返回什么内容,代理到哪个地方 location 表示访问路径

proxy_pass 表示代理的具体服务地址

配置到这一步代理已经成功了proxy_pass 设置了什么,默认其host就是什么 proxy_set_header 表示修改代理的HTTP头

proxy_set_header Host $host 表示经过代理之后修改host为配置的host加上这个,如果你访问test.com时,其host就是test.com不加这个,如果你访问test.com时候,其host就是http://127.0.0.1:8000可以针对这个不同的nginx配置,在node服务中添加console.log(request.headers.host)进行验证在不同配置验证的时候,注意进行重启nginx操作:$sudo nginx -s reload从这里可以看出nginx可以修改请求的内容,浏览器发送请求到nginxnginx这边进行转发,也就是nginx发起了一个http的请求,发送到我们实际的服务器作为发起方,nginx认为的host就是我们设置的proxy_pass作为开发者,我们拿到host希望拿到浏览器给我们的host,而非我们自己的host我们就要加上这个proxy_set_header Host $host而这个$host就是nginx中的一个变量,这个变量是请求中带过来的host这样设置,请求中是什么host,就是什么host, nginx中有很多变量,此处不再赘述由此可见,中间代理可以做任何它想做的任何事情,比如我们上网的时候,可能会看到的一些网络服务商插入的广告而http传输是明文都是不可靠的,https传输是加密,如果是https协议传输,那么代理则无法做任何修改服务端使用不同host是为了区分我们的访问域名的,nginx是通过请求中的host来判断请求是要代理到什么地方 上面例子的是将不同的域名都配置到了同一个端口80,其所有请求都到了本机的http://127.0.0.1:8000服务这样一台物理机器就可以跑几个不同的服务,这样可以更高效利用计算机

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号