luc*_*one 5 server alias localhost port-forwarding
我的本地主机上运行着一些网络应用程序,我可以通过网络浏览器在不同的端口访问它们。
例如,我有一个在端口 8888 上运行的 IPython 笔记本服务器(我可以通过 访问它http://localhost:8888),以及一个侦听端口 9000 的小型 Flask 应用程序。
我知道我可以通过修改 localhost 设置别名/etc/hosts,但我想在这里实现的是为不同的端口设置不同的别名。
例如,我想打开浏览器并使用http://notebooks/代替http://localhost:8888和 而http://flaskapp不是http://localhost:9000。
是否有捷径可寻?
您必须使用某种形式的 iptables 基于目的地的转发规则,或者使用Apache或nginx 作为代理。为了nginx:
sudo apt-get install nginx
Run Code Online (Sandbox Code Playgroud)
创建以下形式的虚拟服务器配置:
server {
server_name notebooks;
location / {
proxy_pass http://localhost:8888;
proxy_redirect default;
}
access_log /var/log/nginx/notebook-access.log;
error_log /var/log/nginx/notebook-error.log;
}
Run Code Online (Sandbox Code Playgroud)
这可以通过编辑默认站点 ( /etc/nginx/sites-available/default) 或在该目录中创建新文件(/etc/nginx/sites-available/notebook例如 )来完成。使用您最喜欢的具有管理员权限的编辑器(sudo vim、sudo -H gedit等)。
然后通过在 中创建链接来启用该站点/etc/nginx/sites-enabled/(如果该站点尚不存在):
sudo ln -s /etc/nginx/sites-{available,enabled}/default
# or, if you created a new file:
sudo ln -s /etc/nginx/sites-{available,enabled}/notebook
Run Code Online (Sandbox Code Playgroud)
重新开始nginx:
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)
进行编辑,以便您拥有与上述配置中/etc/hosts使用的名称相同的别名。server_name
您可以创建更多这样的虚拟服务器来代理各种端口。
我不太确定我的 iptables-fu,但一些简单的重定向似乎对我来说效果很好。例如,使用一个简单的 Python Web 服务器 ( python3 -m http.server 8888):
iptables -t nat -A OUTPUT -p tcp -d notebooks --dport 80 -j REDIRECT --to-ports 8888
Run Code Online (Sandbox Code Playgroud)
该命令很容易理解:
-A OUTPUT -p tcp匹配传出 TCP 流量。-d notebooks并--dport 80匹配目标主机名和端口。这里不需要该端口,因为无论如何您可能只使用一个端口。-j REDIRECT --to-ports 8888使用 REDIRECT 链,8888作为重定向的目标端口。您只能将这条链条与nat桌子一起使用。notebooks应存在 的条目。/etc/hosts | 归档时间: |
|
| 查看次数: |
5642 次 |
| 最近记录: |