我正在尝试设置一个反向代理,以只允许几个选定的 ip 范围代理到内部主机,而我希望不在 ip 范围内的任何其他人重定向到我们的内部命名主机。在此设置中,网络服务将正常工作,而没有通过 VPN 连接到我们网络的任何人都无法导航到内部资源。我一直试图让它在没有运气的情况下工作,我的部分配置目前如下:
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
<Location />
Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23
Deny From All
ProxyPass http://server.local.corp:8000/
ProxyPassReverse http://server.local.corp:8000/
</Location>
Run Code Online (Sandbox Code Playgroud)
此配置似乎可以很好地阻止其他 ip 范围进行代理,但是我不清楚如何为其他人添加重定向语句。
编辑 从第一个答案中获取建议我的代码现在看起来像:
<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
ProxyPass / http://server.local.corp:8000/
ProxyPassReverse / http://server.local.corp:8000/
</If>
Run Code Online (Sandbox Code Playgroud)
并且 apache 在重启时抛出以下错误:
ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.
Run Code Online (Sandbox Code Playgroud) 我有一个用于辅助单位的服务,并不断收到错误消息:[/run/fleet/units/tomcat-discovery@1.service:11] 尾随垃圾,忽略。tomcat-discovery@1.service 没有 ExecStart= 设置,只允许 RemainAfterExit=yes 服务。拒绝。
我似乎已经尝试了我能想到的所有不同组合,并且已经成功地测试了来自终端的命令,没有问题。如果我删除对 etcdctl 的第一次调用,则第二个 set 命令也可以在服务文件中正常工作。关于我在这里哪里出错的任何想法?
[Unit]
Description=Tomcat web server etcd registration
# Requirements
Requires=etcd.service
Requires=tomcat@%i.service
# Dependency ordering and binding
After=etcd.service
After=tomcat@%i.service
BindsTo=tomcat@%i.service
[Service]
# Get CoreOS environmental variables
EnvironmentFile=/etc/environment
# Start
ExecStart=/bin/bash -c "\
while true; do \
etcdctl set /services/tomcat/tomcat-%i/ip ${COREOS_PRIVATE_IPV4}:$(docker inspect --format='{{(index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort}}' tomcat.%i) --ttl 180; \
etcdctl set /services/bind/tomcat-%i ${COREOS_PRIVATE_IPV4} --ttl 180; \
sleep 60; \
done"
# Stop
ExecStop=/usr/bin/etcdctl rm --recursive /services/tomcat/tomcat-%i
[X-Fleet]
# Schedule …
Run Code Online (Sandbox Code Playgroud)