Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs ...

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

前言

大家好,我是老马。很高兴遇到你。
我们为 java 开辟者实现了 java 版本的 nginx
https://github.com/houbb/nginx4j
如果你想知道 servlet 如那边置处罚的,可以参考我的另一个项目:
手写从零实现浅易版 tomcat minicat
手写 nginx 系列

如果你对 nginx 原理感兴趣,可以阅读:
从零手写实现 nginx-01-为什么不能有 java 版本的 nginx?
从零手写实现 nginx-02-nginx 的焦点能力
从零手写实现 nginx-03-nginx 基于 Netty 实现
从零手写实现 nginx-04-基于 netty http 收支参优化处置处罚
从零手写实现 nginx-05-MIME范例(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展范例)
从零手写实现 nginx-06-文件夹主动索引
从零手写实现 nginx-07-大文件下载
从零手写实现 nginx-08-范围查询
从零手写实现 nginx-09-文件压缩
从零手写实现 nginx-10-sendfile 零拷贝
从零手写实现 nginx-11-file+range 归并
从零手写实现 nginx-12-keep-alive 连接复用
准备工作-HTTP 服务

我们简单起见,使用 node.js 启动一个简单的前端服务。
ubuntu 如何安装 node.js


  • 更新包索引
    更新你的包索引列表以确保你安装的是最新版本的软件包。
    1. sudo apt update
    复制代码
  • 安装 Node.js
    使用 apt 安装 Node.js 和 npm(Node.js 的包管理器)。
    1. sudo apt install -y nodejs npm
    复制代码
    这将安装最新的 Node.js 和 npm 版本。
  • 验证安装
    安装完成后,你可以通过检查 Node.js 和 npm 的版本来验证安装是否成功。
    1. node -v
    2. npm -v
    复制代码
安装版本如下:
  1. $ node -v
  2. v12.22.9
  3. $ npm -v
  4. 8.5.1
复制代码
nodejs 创建一个 http 服务

Node.js 最简单的入门例子是一个底子的 Web 服务器,它使用 Node.js 内置的 http 模块来响应 HTTP 请求。
以下是创建这样一个服务器的步调:

  • 安装 Node.js:确保你已经在体系上安装了 Node.js。你可以通过在终端运行以下命令来检查 Node.js 是否已安装以及其版本号:
    1. node -v
    复制代码
  • 创建一个新的 JavaScript 文件:在你的文本编辑器中,创建一个名为 app.js 的新文件。
  • 编写代码:在 app.js 文件中,输入以下代码:
    1. const http = require('http'); // 引入 http 模块
    2. // 创建一个 HTTP 服务器
    3. const server = http.createServer((req, res) => {
    4.   res.writeHead(200, {'Content-Type': 'text/plain'});
    5.   res.end('Hello, World!\n'); // 响应请求并发送一个字符串
    6. });
    7. // 服务器监听 3000 端口
    8. server.listen(3000, '127.0.0.1', () => {
    9.   console.log('Server running at http://127.0.0.1:3000/');
    10. });
    复制代码
  • 运行你的服务器:在终端中,导航到 app.js 文件地点的目录,然后运行以下命令:
    1. node app.js
    复制代码
  • 访问服务器
  1. $ curl http://127.0.0.1:3000/
  2. Hello, World!
复制代码
想通过 nginx 来代理访问这个 http 服务,应该如何设置实现?

要通过 Nginx 代理访问你的 Node.js HTTP 服务,你需要在 Nginx 的设置文件中设置一个代理服务器。
以下是设置 Nginx 以代理 Node.js 服务的步调:
先看一下 nginx 的设置

默认的设置如下:
  1. cat /etc/nginx/nginx.conf
复制代码
如下:
  1. $ cat /etc/nginx/nginx.conf
  2. user www-data;
  3. worker_processes auto;
  4. pid /run/nginx.pid;
  5. include /etc/nginx/modules-enabled/*.conf;
  6. events {
  7.         worker_connections 768;
  8.         # multi_accept on;
  9. }
  10. http {
  11.         ##
  12.         # Basic Settings
  13.         ##
  14.         sendfile on;
  15.         tcp_nopush on;
  16.         types_hash_max_size 2048;
  17.         # server_tokens off;
  18.         # server_names_hash_bucket_size 64;
  19.         # server_name_in_redirect off;
  20.         include /etc/nginx/mime.types;
  21.         default_type application/octet-stream;
  22.         ##
  23.         # SSL Settings
  24.         ##
  25.         ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
  26.         ssl_prefer_server_ciphers on;
  27.         ##
  28.         # Logging Settings
  29.         ##
  30.         access_log /var/log/nginx/access.log;
  31.         error_log /var/log/nginx/error.log;
  32.         ##
  33.         # Gzip Settings
  34.         ##
  35.         gzip on;
  36.         # gzip_vary on;
  37.         # gzip_proxied any;
  38.         # gzip_comp_level 6;
  39.         # gzip_buffers 16 8k;
  40.         # gzip_http_version 1.1;
  41.         # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  42.         ##
  43.         # Virtual Host Configs
  44.         ##
  45.         include /etc/nginx/conf.d/*.conf;
  46.         include /etc/nginx/sites-enabled/*;
  47. }
  48. #mail {
  49. #       # See sample authentication script at:
  50. #       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
  51. #
  52. #       # auth_http localhost/auth.php;
  53. #       # pop3_capabilities "TOP" "USER";
  54. #       # imap_capabilities "IMAP4rev1" "UIDPLUS";
  55. #
  56. #       server {
  57. #               listen     localhost:110;
  58. #               protocol   pop3;
  59. #               proxy      on;
  60. #       }
  61. #
  62. #       server {
  63. #               listen     localhost:143;
  64. #               protocol   imap;
  65. #               proxy      on;
  66. #       }
  67. #}
复制代码
简单表明

这是一个 Nginx 的主设置文件,它包含了用于定义 Nginx 服务器行为的多种设置。
以下是设置文件中每一行的表明,其中注释行以 # 开头:
  1. # 指定运行 Nginx 的用户和用户组
  2. user www-data;
  3. # 设置工作进程的数量,'auto' 会让 Nginx 根据 CPU 核心数自动设置
  4. worker_processes auto;
  5. # 指定 Nginx 进程的 PID 文件存放位置
  6. pid /run/nginx.pid;
  7. # 包含所有在 /etc/nginx/modules-enabled/ 目录下启用的模块配置文件
  8. include /etc/nginx/modules-enabled/*.conf;
  9. events {
  10.     # 设置每个工作进程的最大连接数
  11.     worker_connections 768;
  12.     # 以下注释掉的选项可以启用或禁用多请求接受
  13.     # multi_accept on;
  14. }
  15. http {
  16.     ### 基础设置 ###
  17.     # 开启高效文件传输模式
  18.     sendfile on;
  19.     # 开启 TCP 无推送选项,可以提高性能
  20.     tcp_nopush on;
  21.     # 设置类型hash桶的最大大小
  22.     types_hash_max_size 2048;
  23.     # 以下注释掉的选项可以关闭服务器版本号在错误页面和HTTP头部的显示
  24.     # server_tokens off;
  25.     # 设置服务器名称的hash桶大小
  26.     # server_names_hash_bucket_size 64;
  27.     # 禁止在重定向响应中出现服务器名称
  28.     # server_name_in_redirect off;
  29.     # 包含 MIME 类型配置文件
  30.     include /etc/nginx/mime.types;
  31.     # 默认的 MIME 类型
  32.     default_type application/octet-stream;
  33.     ### SSL 设置 ###
  34.     # 设置 SSL/TLS 协议版本
  35.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 不支持 SSLv3,参考 POODLE 漏洞
  36.     # 优先使用服务器端的加密套件
  37.     ssl_prefer_server_ciphers on;
  38.     ### 日志设置 ###
  39.     # 定义访问日志的存放路径
  40.     access_log /var/log/nginx/access.log;
  41.     # 定义错误日志的存放路径
  42.     error_log /var/log/nginx/error.log;
  43.     ### Gzip 设置 ###
  44.     # 开启 Gzip 压缩
  45.     gzip on;
  46.     # 以下注释掉的选项可以进一步配置 Gzip 压缩行为
  47.     # gzip_vary on;
  48.     # gzip_proxied any;
  49.     # gzip_comp_level 6;
  50.     # gzip_buffers 16 8k;
  51.     # gzip_http_version 1.1;
  52.     # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  53.     ### 虚拟主机配置 ###
  54.     # 包含 /etc/nginx/conf.d/ 目录下的所有配置文件
  55.     include /etc/nginx/conf.d/*.conf;
  56.     # 包含 /etc/nginx/sites-enabled/ 目录下的所有配置文件
  57.     include /etc/nginx/sites-enabled/*;
  58. }
  59. #mail {
  60.     # 下面的注释掉的链接提供了一个 Nginx 与 Apache/PHP 脚本进行 IMAP 认证的示例
  61.     # 详见:http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
  62.     #
  63.     # auth_http localhost/auth.php;
  64.     # pop3_capabilities "TOP" "USER";
  65.     # imap_capabilities "IMAP4rev1" "UIDPLUS";
  66.     #
  67.     # server {
  68.     #     listen     localhost:110;
  69.     #     protocol   pop3;
  70.     #     proxy      on;
  71.     # }
  72.     #
  73.     # server {
  74.     #     listen     localhost:143;
  75.     #     protocol   imap;
  76.     #     proxy      on;
  77.     # }
  78. #}
复制代码
这个设置文件定义了 Nginx 服务器的基本运行参数,如用户、工作历程、PID 文件位置,以及事件处置处罚、HTTP、SSL、日志、Gzip 压缩和虚拟主机包含的设置。被注释的部分可以通已往掉前面的 # 符号来启用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表