首页 > 系统相关 >Windows下Nginx的安装与使用(一):配置端口转发

Windows下Nginx的安装与使用(一):配置端口转发

时间:2022-12-20 20:34:06浏览次数:60  
标签:log Windows 端口 server Nginx book proxy

Nginx配置 Nginx入门 Nginx负载均衡 Nginx端口转发

什么是端口转发

当我们在服务器上搭建一个图书以及一个电影的应用,其中图书应用启动了 8001 端口,电影应用启动了 8002 端口。此时如果我们可以通过:

localhost:8001    //图书
localhost:8002 //电影

但我们一般访问应用的时候都是希望不加端口就访问域名,也即两个应用都通过 80 端口访问。但我们知道服务器上的一个端口只能被一个程序使用,这时候如何该怎么办呢?一个常用的方法是用 Nginx 进行端口转发。Nginx 的实现原理是:用 Nginx 监听 80 端口,当有 HTTP 请求到来时,将 HTTP 请求的 HOST 等信息与其配置文件进行匹配并转发给对应的应用。例如当用户访问 book.douban.com 时,Nginx 从配置文件中知道这个是图书应用的 HTTP 请求,于是将此请求转发给 8001 端口的应用处理。当用户访问 movie.douban.com 时,Nginx 从配置文件中知道这个是电影应用的 HTTP 请求,于是将此请求转发给 8002 端口的应用处理。一个简单的 Nginx 配置文件(部分)如下面所示:

#配置负载均衡池
#Demo1负载均衡池
upstream book_pool{
server 127.0.0.1:8001;
}
#Demo2负载均衡池
upstream movie_pool{
server 127.0.0.1:8002;
}

#Demo1端口转发
server {
listen 80;
server_name book.chanshuyi.com;
access_log logs/book.log;
error_log logs/book.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://book_pool;
}
}
#Demo2端口转发
server {
listen 80;
server_name movie.chanshuyi.com;
access_log logs/movie.log;
error_log logs/movie.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://movie_pool;
}
}

 

上面这段配置实现了:

1、当用户访问的域名是:http://book.chanshuyi.com 时,我们自动将其请求转发给端口号为 8001 的 Tomcat 应用处理。

2、当用户访问的域名是:http://movie.chanshuyi.com 时,我们自动将其请求转发给端口号为 8002 的 Tomcat 应用处理。

上面的这种技术实现就是端口转发。端口转发指的是由软件统一监听某个域名上的某个端口(一般是80端口),当访问服务器的域名和端口符合要求时,就按照配置转发给指定的 Tomcat 服务器处理。我们常用的 Nginx 也有端口转发功能。

用 Nginx 实现端口转发

下面我们将从零开始,讲解如何配置端口转发。

首先去 Nginx 官网下载一个 Windows 版本的 Nginx,或者直接点击​​这里​​下载。这里我们用的是 Nginx1.8 

Windows下Nginx的安装与使用(一):配置端口转发_端口转发

下载解压之后的目录结构如下:

Windows下Nginx的安装与使用(一):配置端口转发_请求转发_02

其中 conf 目录存放的是 Nginx 的配置文件,logs 存放的是 Nginx 的日志文件。

下面我们先模拟两个 tomcat 应用。到​​这里​​下载 tomcat604401.zip 和 tomcat604402.zip,它们是两个简单的Web项目,我们将通过他们来测试 Nginx 的配置是否成功。

下载之后直接运行两个 tomcat 下面的 bin/startup.bat,然后访问下面的链接看是否应用是否正常启动:

​​http://localhost:8001/​​

​​http://localhost:8002/​​

正常情况下会访问到具体的页面:

Windows下Nginx的安装与使用(一):配置端口转发_请求转发_03

Windows下Nginx的安装与使用(一):配置端口转发_Nginx_04

如果能看到上面的页面,那说明 tomcat 启动成功了。

下面我们进行 Nginx 配置,来实现端口转发。把下面的内容复制并覆盖 conf/nginx.conf 文件:

#user  nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;


#配置负载均衡池
#Demo1负载均衡池
upstream book_pool{
server 127.0.0.1:8001;
}
#Demo2负载均衡池
upstream movie_pool{
server 127.0.0.1:8002;
}

#Demo1端口转发
server {
listen 80;
server_name book.chanshuyi.com;
access_log logs/book.log;
error_log logs/book.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://book_pool;
}
}
#Demo2端口转发
server {
listen 80;
server_name movie.chanshuyi.com;
access_log logs/movie.log;
error_log logs/movie.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://movie_pool;
}
}
}

之后双击 nginx.exe 启动 Nginx。打开 Windows 任务管理器,如果看到 nginx 的进程,那么说明启动成功了,否则根据 logs 文件夹下的日志文件进行修改。

Windows下Nginx的安装与使用(一):配置端口转发_Nginx_05

之后打开 C:\Windows\System32\drivers\etc\hosts 文件,添加以下配置:

# Set the Domain Redirect
127.0.0.1 book.chanshuyi.com movie.chanshuyi.com

(设置 host 主要是为了使域名重定向。进行了上述配置之后,在本机访问  book.chanshuyi.com movie.chanshuyi.com 的时候,系统会将请求转发给指定IP的服务器,而不是通过DNS服务器解析。通过设置 HOST,我们即使没有域名,也可以在本机用域名的方式访问自己启动的应用程序。)

之后我们打开浏览器,输入如下地址访问:

​http://book.chanshuyi.com​

​http://movie.chanshuyi.com​

[MARK PIC1]

[MARK PIC2]

如果你成功看到以上页面,那说明 Nginx 成功启动并配置成功了。

Nginx 端口转发原理

下面我们来看看从发送 HTTP 请求到具体的 tomcat 应用处理的整个流程。

Windows下Nginx的安装与使用(一):配置端口转发_Nginx_06

在本例中,当我们启动 Nginx 时, Nginx 就启动线程不断地监听 80 端口。用户浏览器发送 book.chanshuyi.com 请求,服务器接收到用户的 HTTP 请求时 Nginx 也监听到了这一时间。于是 Nginx 从 HTTP 请求头中取出用户请求的 server_name,并与配置文件中配置的进行匹配,如果匹配成功,那么就将请求转发给对应的应用服务器处理。否则 Nginx 将此次请求转发给配置文件中配置的第一个 server。

例如:用户通过浏览器发送 ​​book.chanshuyi.com​​ 请求,Nginx 监听到服务器 80 端口上的请求,并根据配置文件寻找对应的server。

#Demo1端口转发
server {
listen 80;
server_name book.chanshuyi.com;
access_log logs/book.log;
error_log logs/book.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://book_pool;
}
}

 

Nginx 找到了对应的server,并发现对应的 server 配置了一个负载均衡池 book_pool。于是它将此请求分配给负载均衡池的应用服务器处理,即本机上端口为 8001 的应用服务器。

#Demo1负载均衡池
upstream book_pool{
server 127.0.0.1:8001;
}

到这里关于端口转发就结束了。我们将在下一篇中介绍如何进行负载均衡的配置。

 


Windows下Nginx的安装与使用(一):配置端口转发_Nginx_07



标签:log,Windows,端口,server,Nginx,book,proxy
From: https://blog.51cto.com/u_13879334/5956654

相关文章

  • HP笔记本无法休眠问题,或者黑屏后无法唤醒,在windows10(win10)系统下
    1可以找找其他的博文里面关于离开模式的设置修改注册表关闭HKEY_LOCAL_MacHINESYSTEMCurrentControlSetControlSessionManagerPowerAwayModeEnabled键值:0,关闭1,开......
  • windows 启动
     windows启动过程windows7启动过程:简略版:BIOS自检--载入运行MBR--读取DPT,找活动分区(磁盘分区表)--进入活动分区载入运行PBR(分区引导记录)--移权Bootmgr--读取BCD--......
  • 安装confluence7.19.4、jira9.4破解并使用Nginx代理
    背景略安装jira准备两个目录,一个是jira的安装目录,一个是jira的home目录,数据都存在home目录/data/jira/data/jira_home下载,解压wgethttps://product-downl......
  • Qt下MQTT模块的导入(源码直接导入)适用Windows和Linux系统
    Qt下MQTT模块的导入(源码直接导入)适用Windows和Linux系统​​0.环境​​​​1.MQTT源码下载(也可以去官网下载)​​​​2.MQTT源码解压成功复制src/mqtt文件夹到工程中​......
  • nginx报499
    Nginx499错误的原因及解决方法打开Nginx的access.log发现在最后一次的提交是出现了HTTP1.14990-这样的错误,在百度搜索nginx499错误,结果都是说客户端主动断开了连接。......
  • windows下安装make,使用makefile文件
    @目录前言Makefile简介make作用安装make:1.windows上安装:chocolatey一、Chocolatey介绍二、Chocolatey安装安装make配置make连接前言本人在学习go-micro中,用到Makefile,本......
  • Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )
    以下是搭建基于DOSBOX+MASM32的汇编语言开发环境记录。 汇编IDE:radasm、MasmPlus、EasyCode、VisualStudio、Emu8086、ASM-Tool 等。使用比较多的就是 radasm、M......
  • nginx中proxy_set_header Host $host的作用
    nginx配置upstream负载均衡后请求400,配置proxy_set_headerHost$host成功.请问这是什么原理? proxy_set_headerHost$host有什么作用? ......
  • centos-stream中安装nginx遇到的问题一二
    在centos-stream中安装nginx-1.9.15时遇到在make时遇到如下问题:在nginx文件夹里执行make命令报错src/core/ngx_murmurhash.c:37:11:error:thisstatementmayfallt......
  • 故障分析 | MySQL 无监听端口故障排查
    作者:王向爱可生DBA团队成员,负责公司DMP产品的运维和客户MySQL问题的处理。擅长数据库故障处理。对数据库技术和python有着浓厚的兴趣。前言最近解决了一个比较基础......