linux curl https下如何走 https 代理

10625人阅读
Server(4)
Linux(4)
& & & & 有些局域网环境上网需要使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就需要手动配置了。
& & & & 如果要全局用户使用应用于所有的Shell,就需要修改 /etc/profile 文件
# vi /etc/profile& & & & 在文件中添加以下配置
http_proxy=:8080
https_proxy=$http_proxy
ftp_proxy=user:password@:8080
no_proxy=*.,10.*.*.*,192.168.*.*,*.local,localhost,127.0.0.1
export http_proxy https_proxy ftp_proxy no_proxy& & & & 其中
http_proxy:http协议使用代理服务器地址;
https_proxy:https协议使用安全代理地址;
ftp_proxy:ftp协议使用代理服务器地址;
user:代理使用的用户名;
password:代理使用用户名的密码;
:代理地址,可以是IP,也可以是域名;
8080:使用的端口;
no_proxy:不使用代理的主机或IP。
& & & &&保存退出,注销重新登陆系统即可生效。
& & & & 此方法只适合配置http代理,使用socket代理上网的另有其他配置方法。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16559次
排名:千里之外
原创:10篇
(1)(1)(1)(1)(3)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 179, 距离下一级还需 21 积分
论坛徽章:0
想请教一下论坛里的高手
如何配置nginx去反向代理远端的https下的web服务器。下面是我的配置文件nginx.conf的内容,请大家指正
#cat nginx.conf
worker_processes&&2;
#error_log&&logs/error.
#error_log&&logs/error.log&&
error_log&&logs/error.log&&
pid& && &&&logs/nginx.
& & worker_connections&&4096;
& & include& && & mime.
& & default_type&&application/octet-
& & #log_format&&main&&'$remote_addr - $remote_user [$time_local] $request '
& & #& && && && && && &'&$status& $body_bytes_sent &$http_referer& '
& & #& && && && && && &'&$http_user_agent& &$http_x_forwarded_for&';
& & #access_log&&logs/access.log&&
& & sendfile& && &&&
& & tcp_nopush& &&&
& & #keepalive_timeout&&0;
& & #keepalive_timeout&&65;
& & gzip&&
& & gzip_min_length 1100;
& & gzip_buffers 4 8k;
& & gzip_types text/
& & output_buffers 1 32k;
& & postpone_output 1460;
& & #send_lowat 12000;
& & keepalive_timeout 75 20;
server 192.168.6.8:80;
& & server {
& && &&&listen& && & 80;
& && &&&server_name&&192.168.44.151;
& && &&&#charset koi8-r;
& && &&&charset utf-8;
& && &&&access_log&&logs/host.access.
& && &&&#location / {
& && &&&#& & root& &
& && &&&#& & index&&index.html index.htm index.
& && &&&#}
& && & location / {
& && & proxy_
& && & proxy_set_header X-Real-IP $remote_
& && & if (-d $request_filename){
& && & rewrite ^/(.*)([^/])$ http://$host/$1$2/
& && & location /nginx_status {
& && & stub_
& && & access_
include enable_
& && &&&#error_page&&404& && && && &&&/404.
& && &&&# redirect server error pages to the static page /50x.html
& && &&&error_page& &500 502 503 504&&/50x.
& && &&&location = /50x.html {
& && && && &root& &
& && &&&# proxy the PHP scripts to Apache listening on 127.0.0.1:80
& && &&&#location ~ \.php$ {
& && &&&#& & proxy_pass& &;
& && &&&#}
& && &&&# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
& && &&&#location ~ \.php$ {
& && &&&#& & root& && && &&&
& && &&&#& & fastcgi_pass& &127.0.0.1:9000;
& && &&&#& & fastcgi_index&&index.
& && &&&#& & fastcgi_param&&SCRIPT_FILENAME&&/scripts$fastcgi_script_
& && &&&#& & include& && &&&fastcgi_
& && &&&#}
& && &&&# deny access to .htaccess files, if Apache's document root
& && &&&# concurs with nginx's one
& && &&&#location ~ /\.ht {
& && &&&#& & deny&&
& && &&&#}
& & # another virtual host using mix of IP-, name-, and port-based configuration
& & #server {
& & #& & listen& && & 8000;
& & #& & listen& && & somename:8080;
& & #& & server_name&&somename&&alias&&another.
& & #& & location / {
& & #& && &&&root& &
& & #& && &&&index&&index.html index.
& & #& & }
& & # HTTPS server
& & server {
& && &&&listen& && & 443;
& && & server_name&&
& && &&&ssl& && && && && && &
& && &&&ssl_certificate& && &/usr/local/nginx/conf/server.
& && &&&ssl_certificate_key&&/usr/local/nginx/conf/server.
& && &&&error_page 497 &https://$host$uri?$args&;
& && &&&ssl_session_timeout&&5m;
& && &&&ssl_protocols&&SSLv2 SSLv3 TLSv1;
& && &&&ssl_ciphers&&ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
& && &&&ssl_prefer_server_ciphers& &
& && &&&location / {
& & #& && &&&root& &
& & #& && &&&index&&index.html index.
& && &&&include proxy.
& && &&&auth_basic &status&;
对上面的配置文件做一些基本的解释:我的nginx代理服务器ip地址为192.168.44.151,真实的服务器为192.168.6.8.现在的问题是,我的思路为用户请求到达nginx代理服务器的80端口后,代理将请求转发至远端web服务器的80端口(因为首页未加密,但首页上有进入被加密内容的链接),当用户在点击首页上被加密内容链接后便进入加密页面,即https。
以上的配置能够正常看到非加密内容,但是一旦点击含有加密内容的链接后,便会报错。内容为“无法显示该页面”,远端服务器的证书和私钥文件均已上传至这台nginx上
想问一下,上面的配置中是哪里配置的有问题呢?
#cat proxy.conf
#proxy_set_header X-Forwarded-For $remote_
#proxy_set_header REMOTE_ADDR $remote_
#proxy_set_header RealIP $remote_
proxy_set_header Host $proxy_
#proxy_set_header Accept-Encoding '';
#proxy_hide_header X-C
#proxy_hide_header X-Powered-By;
#proxy_hide_header Last-M
#proxy_hide_header D
#proxy_hide_header Content-L
#proxy_hide_header Content-L
#proxy_hide_header Cache-C
#proxy_pass_header S
client_max_body_size& & 8m;
proxy_connect_timeout& &15s;
proxy_send_timeout& && &1m;
proxy_read_timeout& && &1m;
proxy_temp_file_write_size 1024m;
proxy_buffer_size& && && &32k;
proxy_buffers& && && && & 4 32k;
proxy_busy_buffers_size 64k;
proxy_ignore_client_
proxy_next_upstream error timeout invalid_header http_503;
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
稍有积蓄, 积分 254, 距离下一级还需 246 积分
论坛徽章:0
加密? 443端口的那个?
白手起家, 积分 179, 距离下一级还需 21 积分
论坛徽章:0
首先感谢回帖
我现在的情况是,我的151上的nginx可以反向代理真实服务器首页上非加密的内容,且浏览这些内容都是正常的。同时浏览首页也是正常的
但首页上有一些连接,点击之后便会被https加密,所以当点击这些链接之后,便会出现 无法显示该页面 的报错内容
不知道该如何去解决这些问题
感谢每一位回帖的兄弟
家境小康, 积分 1257, 距离下一级还需 743 积分
论坛徽章:0
楼主,你看看我这个是否能帮到您.不是广告.
我之前也做nginx ssl的.因为公司的业务系统买了一个ssl.后端的服务器要做集群.所以才要这么做.呵呵
论坛徽章:0
回复 #1 ProfessorTian 的帖子
需要一个保持时间的
白手起家, 积分 179, 距离下一级还需 21 积分
论坛徽章:0
nginx代理的443端口和被代理的web服务器的443端口之间是个什么关系
当nginx代理远程web的443端口时,这个过程是什么样的
请高手指点
丰衣足食, 积分 789, 距离下一级还需 211 积分
论坛徽章:0
本帖最后由 心若寒江雪 于
16:32 编辑
请问一下你这个弄出来了吗?
如果弄出来了帮我看看吧
ProfessorTian  有些局域网环境上网需要使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是纯命令行的界面就需要手动配置了。
& & & 如果要全局用户使用应用于所有的Shell,就需要修改 /etc/profile 文件
&<span style="color: # # vi /etc/profile&
在文件中添加以下配置  
<span style="color: # http_proxy=:<span style="color: #80
<span style="color: # https_proxy=$http_proxy
<span style="color: # ftp_proxy=user:password@:<span style="color: #80
<span style="color: # no_proxy=*.,<span style="color: #.*.*.*,<span style="color: #2.168.*.*,*.local,localhost,<span style="color: #7.0.<span style="color: #.1
<span style="color: # export http_proxy https_proxy ftp_proxy no_proxy
其中:  http_proxy:http协议使用代理服务器地址;  https_proxy:https协议使用安全代理地址;  ftp_proxy:ftp协议使用代理服务器地址;  user:代理使用的用户名;  password:代理使用用户名的密码;  :代理地址,可以是IP,也可以是域名;  8080:使用的端口;  no_proxy:不使用代理的主机或IP。
& & & &&保存退出,注销重新登陆系统即可生效。
& & & & 此方法只适合配置http代理,使用socket代理上网的另有其他配置方法。
阅读(...) 评论()stunnel的优点和shadowsocks一样,但是却比shadowsocks更安全,stunnel可以来ssl证书,比shadowsocks的密码认证更安全,也能有效的避免中间人攻击,把你的shadowsocks数据拦截下,然后暴力破解应该是易如反掌~~
ssl的非对称加密过程参考:相当安全
单独的stunnel是无法使用的,必须配合http代理,如squid
ubuntu linux服务器端安装:
sudo apt-get install squid3 stunnel4
squid默认代理端口号3128,可自行修改,默认此代理只能本地有权限访问
grep --color '^http_port' /etc/squid3/squid.conf
接下来是stunnel的证书和服务器端配置
1.生成自定义证书:
sudo -s
cd /etc/stunnel
#stunnel.pem是生成的证书文件名字
openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem
#生成证书的过程中需要填写一些国家城市公司等信息,全部随便填写即可
#下面的命令执行的时间叫长 耐心等待
openssl gendh 2048 && stunnel.pem
#出现unable to write 'random state'错误的请执行 rm ~/.rnd
#查看生成的证书相关信息
openssl x509 -subject -dates -fingerprint -in stunnel.pem
2.stunnel服务器对客户端证书的验证,stunnel的配置
#查看stunnel默认配置,下面命令结果的最后一行是默认配置
cat /etc/stunnel/README
#添加默认配置
sudo cp /usr/share/doc/stunnel4/examples/stunnel.conf-sample /etc/stunnel/stunnel.conf
a.编辑/etc/stunnel/stunnel.conf文件找到 chroot = /var/lib/stunnel4/这一行,假如有注释把注释去掉
b.开启调试模式,/etc/stunnel/stunnel.conf文件找到 debug = 7去掉注释,添加foreground = yes到debug = 7下面
cd /var/lib/stunnel4/
sudo mkdir certs
cp /etc/stunnel/stunnel.pem certs/`openssl x509 -hash -noout -in /etc/stunnel/stunnel.pem`.0.
接下来编辑/etc/stunnel/stunnel.conf
a.找到cert = /etc/stunnel/mail.pem修改成cert = /etc/stunnel/stunnel.pem,设置cert证书路径
b.找到verify = 2去掉注释改成verify = 3,开启证书有效性验证
c.找到CApath = /certs有注释去掉注释,这个目录是建立在chroot = /var/lib/stunnel4/基础上,实际就是/var/lib/stunnel4/certs目录,也就是验证证书的目录
d.找到CAfile = /etc/stunnel/certs.pem,有注释去掉注释,并改成之前生成自定义证书的目录:CAfile = /etc/stunnel/stunnel.pem
关于证书的全部设置结束
3.配置stunnel的端口和squid的http代理
编辑/etc/stunnel/stunnel.conf,找到
; **************************************************************************
; * Service definitions (remove all services for inetd mode)&&&&&&&&&&&&&& *
; **************************************************************************
从这里一直文件结尾,全部删除,添加如下内容:
[https]
accept& = 3128
connect = 0.0.0.0:443
简单解释:[https]这个https可以随便写, 3128是squid的http代理默认端口,stunnel将使用这个代理,也就是127.0.0.1:3128. connect部分是stunnel客户端将要连接的代理服务器地址和端口号,端口号443可自信随意修改
stunnel服务器端的所有配置完毕,重新启动:
sudo killall stunnel4
sudo /etc/init.d/stunnel4 start
最后是配置stunnel客户端:本人也是ubuntu系统 ubuntu desktop
安装stunnel:
#安装stunnel
sudo apt-get install stunnel4
#添加默认配置文件
sudo cp /usr/share/doc/stunnel4/examples/stunnel.conf-sample /etc/stunnel/stunnel.conf
开启stunnel调试模式,参考上面stunnel服务器端配置
配置证书
a.把上面stunnel服务器端生成的证书,复制一份到本地
可以这样scp 你的用户名@服务器地址:/etc/stunnel/stunnel.pem /etc/stunnel/stunnel.pem
b.编辑本地/etc/stunnel/stunnel.conf文件,设置证书路径:
找到cert = /etc/stunnel/mail.pem修改成:cert = /etc/stunnel/stunnel.pem
c.找到; **************************************************************************
; * Service definitions (remove all services for inetd mode)&&&&&&&&&&&&&& *
; **************************************************************************
一直到文件结尾全部删除,添加如下内容:
[https]
client = yes
accept& = 127.0.0.1:8080
connect = stunnel服务器地址:443
简单解释:client = yes表示stunnel是运行的是客户端模式,默认没有代表服务器模式
accept& = 127.0.0.1:8080当然就是浏览器需要设置的http代理端口了
connect = stunnel服务器地址:443,请自行修改成你的服务器地址和上面设置的端口号443
重启stunnel客户端:
sudo killall stunnel4
sudo /etc/init.d/stunnel4 start
假如所有一切运行正常,然后可以关闭调试模式.注释 foreground = yes 一行
ubuntu命令行测试非常简单:本地终端执行
export http_proxy='127.0.0.1:8080'
若有失败错误,请自行查看调试信息!!
开机自启动可参考:/etc/stunnel/README文件所描述的,把stunnel服务器端和客户端的/etc/default/stunnel4文件里面的ENABLED设置成1
参考:1
2.
3. 土啬外地址
4.
vfate_linux
浏览: 121446 次
来自: 上海
你好 我现使用的是Ubuntu 14.04 发现正常浏览网页过 ...
赞一个,解决了困惑我好久的问题,SCIM 跟谷歌浏览器冲突严重 ...
你的hhkb pro2翻新是哪里买的?
楼主能HHKB Pro2 这种退烧级键盘上退下来,厉害!现在两 ...
nook必装应用推荐:http://blog.the-eboo ...本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 linux 配置https代理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信