Étant donné que les paramètres de proxy sont différents entre le pare-feu de l'entreprise et la connexion directe à Internet en voyage ou à la maison, configurez un proxy de transfert localement dans Apache2 et modifiez-le en une seule fois avec les paramètres de proxy de transfert. Tous les paramètres de proxy de chaque programme définissent le proxy local. L'environnement que j'utilise est Ubuntu 20.10.
On suppose qu'Apache2 est installé et en cours d'exécution.
Activez le module pour le proxy.
sudo a2enmod proxy proxy_http proxy_ftp proxy_ssl proxy_connect
Basé sur / etc / apache2 / mods-available / proxy.conf
, il est préparé dans / etc / apache2 / sites-available /
.
Personnalisez le numéro de port, l'adresse proxy intranet (paramètre ProxyRemote) et l'adresse d'accès direct (paramètre NoProxy) en fonction de chaque environnement. Cette fois, j'ai défini le numéro de port sur 8888.
/etc/apache2/sites-available/proxy.conf
<IfModule mod_proxy.c>
#Numéro de port gratuit approprié
Listen 8888
#Faites correspondre le paramètre d'écoute avec le numéro de port
<VirtualHost *:8888>
# If you want to use apache2 as a forward proxy, uncomment the
# 'ProxyRequests On' line and the <Proxy *> block below.
# WARNING: Be careful to restrict access inside the <Proxy *> block.
# Open proxy servers are dangerous both to your network and to the
# Internet at large.
#
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.
ProxyRequests On
SSLProxyEngine On
#AllowCONNECT 443
#CustomLog ${APACHE_LOG_DIR}/proxy.log combined
<Proxy *>
AddDefaultCharset off
Require all denied
Require local
</Proxy>
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#ProxyVia Off
# Comment out ProxyRemote if conecting to the Internet directly.
#ProxyRemote * http://proxy.mycompany.com:8888
#NoProxy 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 .mygroup.mycompany.com
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Seul le paramètre ProxyRemote est indépendant en tant que intranet.conf
afin qu'il puisse être facilement commuté.
Définissez ProxyRemote comme proxy au sein de l'entreprise qui émet toutes les demandes.
/etc/apache2/sites-available/intranet.conf
<IfModule mod_proxy.c>
# Comment out ProxyRemote if conecting to the Internet directly.
ProxyRemote * http://proxy.mycompany.com:8888
NoProxy 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 .mygroup.mycompany.com
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
sudo a2ensite proxy intranet
sudo systemctrl restart apache2
Depuis "Paramètres" -> "Réseau" -> "Proxy réseau" de GNOME, définissez le proxy sur "Manuel" et spécifiez respectivement "localhost" et "8888" pour HTTP / HTTPS / FTP.
Définition des variables d'environnement à l'échelle du système.
bash:/etc/profile.d/proxy.sh
#!/bin/bash
export HTTP_PROXY="http://localhost:8888"
export HTTPS_PROXY="http://localhost:8888"
export FTP_PROXY="http://localhost:8888"
apt
paramètres apt. 90 a été décidé de manière appropriée.
config:/etc/apt/apt.conf.d/90proxy
// Configuration for Proxy
Acquire {
ftp::proxy "http://localhost:8888/";
http::proxy "http://localhost:8888/";
https::proxy "http://localhost:8888/";
}
snapd
paramètres snapd.
sudo systemctl edit snapd
L'éditeur s'ouvrira, donc enregistrez-le avec le contenu suivant.
[Service]
Environment=http_proxy=http://localhost:8888
Environment=https_proxy=http://localhost:8888
Redémarrez le démon snapd.
sudo systemctl restart snapd
~/.ssh/config
#
# Configuration for SSH
# ~/.ssh/config
#
Host github.com
User MyUserName
HostName ssh.github.com
Port 443
ProxyCommand nc -X connect -x localhost:8888 %h %p
Si vous devez le définir, définissez-le sur <http: // localhost: 8888>. Cela peut être hérité, mais il est gênant d'avoir un paramètre de proxy pour chaque programme.
C'est correct d'écrire un script simple, mais je ne change pas très souvent et ce n'est pas beaucoup de travail, alors j'ai décidé d'appuyer sur deux commandes.
sudo a2ensite intranet
sudo systemctl reload apache2
sudo a2dissite intranet
sudo systemctrl reload apache2
J'ai fait un script simple.
~/bin/proxy.sh
#!/bin/bash
# Enable/Disable ProxyPass
if [ $# -eq 0 ]; then
a2query -s intranet
exit
fi
case "${1}" in
on)
echo "intranet"
a2ensite intranet > /dev/null
;;
off)
echo "the Internet"
a2dissite intranet > /dev/null
;;
*)
echo "$0 [on|off]"
exit
esac
systemctl reload apache2
Proxy activé
sudo ~/bin/proxy.sh on
Proxy désactivé
sudo ~/bin/proxy.sh off
Confirmation (sudo
n'est pas requis pour la confirmation uniquement)
~/bin/proxy.sh
Recommended Posts