nginx 端口转发/根据目录名转发到不同项目

 

需求:
访问80端口,根据不同的目录访问不同的web程序;

外部访问地址

内部实际地址

www.test.com

127.0.0.1:81

www.test.com\Demo

127.0.0.1:82\Demo

  


实现:
1.
下载nginx:打开 nginx官网,选择Stable version版本下的windows版下载;附蓝奏云地址: nginx/Windows-1.18.0;
2.
解压到非中文路径下,打开目录下 conf\nginx.conf文件
3.
修改server 下的代码:

 

server {

        listen       80;
        server_name  127.0.0.1;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  http://127.0.0.1:81;
        }

        location /Demo {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  http://127.0.0.1:82/Demo;
        }

    }


4.停用本地所有占用80端口的web服务,重启IIS;
5.
nginx.exe目录下,cmd访问,输入:

start nginx

若启动成功,任务管理器进程中可以查看到nginx.exe的进程;
6.
若无法访问,则查看目录 logs\error.log文件,常见错误有端口被占用和路径包含中文,解决办法就是停用所有80端口web服务,和将此文件夹移动到非中文路径即可,停止服务可在nginx.exe下输入cmd命令 nginx.exe -s stop 或者 taskkill /f /im nginx ;

补充:
遇到新问题,有的时候转发后会报错,504 Gateway Time-out,经过网上摸索找到如下解决办法:
conf\nginx.conf文件内容改为如下代码(为了方便查看,已将带#前缀的删除):

worker_processes  4;

events {
    worker_connections  100000; 
}

http {
    fastcgi_buffers 8 128k;
    send_timeout 60;

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

    server {

        listen       80;
        server_name  127.0.0.1;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  http://127.0.0.1:90;
            proxy_read_timeout  3600;
        }

        location /api {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  http://127.0.0.1:8007/api;
            proxy_read_timeout  3600;
        }
    }
}

 


worker_processes 4:工作进程数,默认是1,你电脑CPU有几核就可以设置为数字几;
worker_connections: 100000:
单个工作进程可以允许同时建立外部连接的数量,数字越大,能同时处理的连接越多;
proxy_read_timeout 3600:nginx
默认超时时间是60s,超过60s,连接会被断开,这里我们将超时时间设置为3600,就是一个小时,这个值可以灵活设置
fastcgi_buffers 8 128k:
设置缓冲区大小;
send_timeout 60:
服务端向客户端发送数据的超时时间;

参考:
nginx 端口转发 (proxy_pass反向代理)
WindowsNginx的启动、停止等命令
nginx把不同请求转发到不同端口的项目(统一监听80端口)
WindowsNginx安装与配置教程
Nginx核心要领五:worker_processesworker_connections设置
nginx设置连接超时解决504 gateway timeout
Nginx的超时timeout配置详解

 

相关推荐

网友评论(0)