热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu上安装nginx并配置反向代理Node.js端口

原文链接: https:www.cnblogs.comyalongp13936608.html当服务运行到线上后,我们通常通过域名而不是IP+端口来访问,并且一台服务器上可能有多个

原文链接: https://www.cnblogs.com/yalong/p/13936608.html

当服务运行到线上后,我们通常通过域名而不是 IP + 端口来访问,并且一台服务器上可能有多个 Node 服务在运行,

而且运行在不同的端口。如果它们都共用 80 端口显然是不行的,这时候就需要有一种机制,来把不同域名的请求,

通过 80 端口进来后,分配给不同的端口服务。

基于这个背景,我们要做的事很简单,先让 Web 服务通过 80 端口可被访问到,之后再考虑分配或者说代理如何实现。

80 端口在访问的时候是可以省略的,我们以 xxx.com 这个假的域名为例, 也就是说,可以通过 http://xxx.com  进行访问了。

怎么实现呢?这就需要大名鼎鼎的 Nginx 出场了。

1.安装 Nginx 和关闭版本号露出

安装nginx 

sudo apt-get update
sudo apt-get install nginx

安装完毕后,检查下 Nginx 的版本: nginx -v  

这个版本号通常可以在 Web 端的 header 里看到。安全起见,可以通过配置隐藏掉,如下打开 nginx.conf 文件:

sudo vi /etc/nginx/nginx.conf

把 nginx.conf 文件中的server_tokens on 改成 server_tokens off 就可以了

有的配置里 没有server_tokens on 的 直接添加  server_tokens off 即可

2.Nginx 实现反向代理原理

首先当端口是80的时候, 域名访问的时候 是可以省略端口的,直接域名访问,

nginx 会监听80端口,同时根据不同的域名,把流量分配给Node相应的端口服务。

补充知识点:正向代理 反向代理的区别 看这里 https://www.cnblogs.com/taostaryu/p/10547132.html 

3.进行配置

在 /etc/nginx/conf.d 文件夹下面新增一个配置文件:

sudo vi /etc/nginx/conf.d/xxx-node-5000.conf

文件命名可以用上面的命名方式,看一下配置文件,便知道是哪个域名对应到哪个端口。

因为将来可能会有多个项目对应服务器后端的多个服务,所以要考虑这种负载均衡的这种场景。这时候通过以下配置来实现:

# 通过 upstream 我们可以设定一个简单的负载均衡策略,以应对将来可能的升级
# 首先定义一个 server 集群 gougou,里面可以加多个 server,每个 server 对应的值可以用域名,也可以直接用 IP,
# 但我们通常不会用 IP 来访问,而是通过域名: upstream nodeStatic { server
127.0.0.1:5000; } server { listen 80; server_name xxx.com; // xxx.com 是你的域名 # Gzip Compression gzip on; gzip_comp_level 6; gzip_vary on; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/css application/json application/x-Javascript text/xml application/xml application/xml+rss text/Javascript; gzip_buffers 16 8k; location / { # remote_addr 代表客户端的 IP proxy_set_header X-Real-IP $remote_addr; # proxy_add_x_forwarded_for 获取真实的 IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # http_host 表示请求的 host 头 proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # proxy_pass 指令实现代理。把域名代理到集群名上面 proxy_pass http://nodeStatic; proxy_redirect off; } }

保存后,通过   sudo nginx -t   来验证配置是否正确,有没有语法错误,然后我们把 Nginx 的服务重启一下。

sudo service nginx restart

再把 URL 中的端口号去掉,我们访问下:

http://xxx.com

就可以正常访问了。

小结

Nginx 与 Node.js 的配套使用是部署 Node 服务时非常关键的环节,其中 Nginx 往往扮演的是景区大导游的角色,任何人过来要工人干活,都要先经过他,

他看看你是来自哪儿的,把你的信息记录下,然后看你是要去哪里,再把你分配给相应的对象接待,

简单来说就是,Nginx 搞分配,Node 去干活。

当然像日志、安全证书和静态资源代理这些事情,也都可以由 Nginx 前置完成,这样 Node 就可以专心负责业务的部分了。

 


推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在 Ubuntu 系统中安装 Python pip 时遇到错误的解决方案 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
author-avatar
手机用户2502903053
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有