首页 > 解决方案 > 用于 http 请求的 FreeBSD 端口重定向

问题描述

我一生中从未使用过 FreeBSD,但我必须在 FreeBSD 上部署 HTTP API。API 部署在端口 3002 上。

我需要做什么才能将请求从端口 80 转发到端口 3002?

我尝试将此添加到我的 /etc/natd.conf 文件中:

interface le0
use_sockets yes
dynamic yes

redirect_port tcp 192.168.1.8:80 192.168.1.8:3002

我的 /etc/ipfw.rules 文件中也有这个:

 ipfw add 1000 fwd 127.0.0.1,80 tcp from any to any 3002

当我跑步时,ipfw -q -f flush我得到:

 ipfw: setsockopt(IP_FW_XDEL): Protocol not available

我不知道这意味着什么,但它不起作用。

有人可以告诉我(用简单的新手术语)如何在 FreeBSD 中将请求从 80 转发到 3002 吗?

(我假设端口 80 是开放的,并且是全新 FreeBSD 安装上 HTTP 请求的默认端口)

标签: freebsdportforwardingsetsockoptipfw

解决方案


最简单的方法是使用NginxHAproxy侦听port 80然后将您的请求转发/代理到您的 API,通过这样做,您还可以从终止 SSL port 443中受益,只需将流量转发到您的 API

例如安装 nginx:

# pkg install nginx-lite

然后在服务器部分编辑/usr/local/etc/nginx/nginx.conf并使用它:

server {
    listen 80 default_server;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3002;
        proxy_http_version 1.1; # for keep-alive
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

这会将请求转发到端口 3002 上的 API,而无需使用NAT或任何防火墙(如ipfwor pf),如果您的应用程序在监狱中运行,也可以使用。


推荐阅读