freebsd - 用于 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 请求的默认端口)
解决方案
最简单的方法是使用Nginx或HAproxy侦听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
或任何防火墙(如ipfw
or pf
),如果您的应用程序在监狱中运行,也可以使用。
推荐阅读
- php - 为什么我的上传临时文件夹中有两个文件?
- python - 随机密码访问 Chrome 上的网页
- python-3.x - tkinter 是否在 Python 3.9.0b3 中重命名?
- apache-zookeeper - 如何让 Zookeeper 的客户端版本连接到服务器?
- python - 如何从带有枚举的列表中仅检索一个值?
- image - 如何在 Flutter 中删除图像的选定部分?
- reactjs - 错误:找不到与模式“'./src/views/{tokens,atoms,molecules,organisms}/**/*.scss'”匹配的文件
- r - 如何通过从 R 中的列名生成键来旋转/收集多个组/列对?
- python - tkinter 中的滚动条和搜索栏
- python - PyTorch - RuntimeError: [enforce fail at inline_container.cc:209]。找不到文件:存档/data.pkl