Nginx可以作为正向代理服务器来帮助客户端访问互联网资源。以下是配置Nginx作为代理服务器的详细步骤:
安装Nginx
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
配置Nginx作为代理服务器
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/proxy.conf
):
server {
listen 8080; # 代理服务器监听端口
server_name your_proxy_server;
# 解析DNS设置(可选,可以避免客户端DNS污染问题)
resolver 8.8.8.8 8.8.4.4;
location / {
# 允许所有请求通过代理
proxy_pass http://$http_host$request_uri;
# 设置代理请求头
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他代理设置
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering off;
}
}
启动Nginx服务
sudo systemctl start nginx
sudo systemctl enable nginx
server {
listen 8080;
server_name your_proxy_server;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://$http_host$request_uri;
# 其他代理设置...
}
}
创建密码文件:
sudo sh -c "echo -n 'username:' >> /etc/nginx/.htpasswd"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
server {
listen 8080;
server_name your_proxy_server;
allow 192.168.1.0/24; # 允许的IP段
deny all; # 拒绝其他所有IP
location / {
proxy_pass http://$http_host$request_uri;
# 其他代理设置...
}
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
listen 8080;
server_name your_proxy_server;
location / {
proxy_cache my_cache;
proxy_pass http://$http_host$request_uri;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 其他代理设置...
}
}
配置客户端使用代理服务器:
export http_proxy="http://your_proxy_server:8080"
export https_proxy="http://your_proxy_server:8080"
set http_proxy=http://your_proxy_server:8080
set https_proxy=http://your_proxy_server:8080
/var/log/nginx/access.log
).htpasswd
文件权限和内容正确resolver
proxy_buffer_size
和proxy_buffers
参数如需更复杂的代理配置(如SOCKS代理),可能需要结合其他工具如Squid或3proxy使用。