前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx简单介绍

Nginx简单介绍

作者头像
epoos
发布2022-06-06 15:37:53
4610
发布2022-06-06 15:37:53
举报
文章被收录于专栏:epoos.comepoos.com

Nginx(发音同engine x)是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。 Nginx在官方测试的结果中,能够支持五万个平行连接,而在实际的运作中可以支持二万至四万个平行链接。 整体采用模块化设计是nginx的一个重大特点,甚至http服务器核心功能也是一个模块。 旧版本的Nginx的模块是静态的,添加和删除模块都要对Nginx进行重新编译,1.9.11以及更新的版本已经支持动态模块加载。 —— 来自维基百科

Nginx最初是作为一个web服务器创建的。但是Nginx除了作为web服务器,还有个功能就是提供反向代理服务 利用Nginx你可以适当地分配流量(负载均衡器)、流媒体、动态调整图像大小、缓存内容等等。

正向代理

作为客户端的中介接受请求,隐藏真实的用户,向服务端获取资源,如果代理在墙外,则可以实现翻墙

反向代理

作为服务端的中介,隐藏真实的服务器,目的是为了实现安全和负载均衡等一系列的功能

安全:用户的请求不会直接到内网的服务器上,而是通过代理做了一层转发,在这一层可以实现安全过滤、流控、防DDOS等一系列策略

负载均衡:我们可以水平扩展后端真正提供服务的服务器数量,代理按照规则转发请求到各个服务端,使得各个服务器负载接近均衡

在mac osx

1.brew

代码语言:javascript
复制
brew list 查看brew安装的软件列表
brew search xx // 搜索
brew install xx // 安装
brew info xx //查看xx信息
brew uninstall xx //卸载

1.用brew安装nginx

代码语言:javascript
复制
brew install nginx

2.启动nginx

代码语言:javascript
复制
[sudo] nginx

3.查看nginx的进程

代码语言:javascript
复制
[sudo] ps aux | grep nginx

访问此地址查看是否启动nginx成功:http://localhost:8080/

4.查看nginx版本

代码语言:javascript
复制
nginx -v

5.停止nginx

代码语言:javascript
复制
[sudo] nginx -s stop

6.重新加载nginx

代码语言:javascript
复制
[sudo] nginx -s reload

7.重启nginx

代码语言:javascript
复制
[sudo] nginx -s stop && [sudo] nginx

ps:如果启动或重启的时候遇到pid报错则按如下方法杀掉nginx主进程

在进程列表里面找到master进程,他的编号就是主进程号了。

步骤一:询nginx主进程

代码语言:javascript
复制
ps -ef | grep nginx

步骤2:发送信号

代码语言:javascript
复制
从容停止:sudo kill -QUIT 主进程号

快速停止:sudo kill -TERM 主进程号

强制停止nginx:sudo pkill -9 nginx

8.nginx默认配置位置

代码语言:javascript
复制
/etc/nginx/nginx.conf
/usr/local/etc/nginx/nginx.conf
# 或者
/usr/local/nginx/conf/nginx.conf

ubuntu系统

安装

代码语言:javascript
复制
[sudo] apt-get install nginx

查看nginx是否启动

代码语言:javascript
复制
ps -ef|grep nginx

关于nginx配置之后获取不到用户真实IP的问题

是因为nginx代理之后未能将ip转发过去。 解决办法:在nginx location匹配项后面加入如下配置即可

代码语言:javascript
复制
proxy_set_header        Host            $host; 
proxy_set_header        X-Real-IP       $remote_addr; 
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 

但是如果有多个规则,就需要在每个规则下面重复配置; 解决办法就是在公共的nginx.conf 里面include proxy.conf公共文件 然后在proxy.conf公共文件中加入上面的配置即可将ip转发了。 proxy.conf 文件

代码语言:javascript
复制
proxy_set_header        Host            $host; 
proxy_set_header        X-Real-IP       $remote_addr; 
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 

nginx.conf 文件

代码语言:javascript
复制
http {
  ####
  #...略...#
  include /etc/nginx/proxy.conf; # 此文件路径为proxy.conf存放地址
  #...略...#
}

之后在nodejs端就可以通过下面的代码获取到真实的ip地址了

代码语言:javascript
复制
req.get("X-Real-IP") || req.get("X-Forwarded-For") || req.ip,

相关链接

官方配置文档 nginx 配置 location 总结及 rewrite 规则写法 配置nginx

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正向代理
  • 反向代理
  • 在mac osx
  • ubuntu系统
  • 查看nginx是否启动
  • 关于nginx配置之后获取不到用户真实IP的问题
  • 相关链接
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档