热门标签 | 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 就可以专心负责业务的部分了。

 


推荐阅读
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
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社区 版权所有