我最近从HTTP网站迁移到HTTPS。为了使用mnogosearch
搜索引擎对本网站的所有页面进行索引,我需要执行一个包含在mnogosearch中的脚本,称为“索引器”,它实际获取网页的所有页面并将它们索引到MySQL表格中。wget从专用服务器的HTTPS网站
此“索引器”脚本必须从托管HTTP服务器的计算机调用,即从虚拟专用服务器(VPS)调用。
此脚本与我的网站的HTTP版本很好地工作,但我有问题与HTTPS索引。
事实上,能够索引的HTTPS网页,我用"virtual scheme as an external retrieval system"
从这个链接:http://www.mnogosearch.org/doc/msearch-extended-indexing.html][1]
它允许使用外部程序来获取HTTPS页面的内容。
它可以把外部程序到一个名为"curl.sh"
脚本:
#!/bin/sh
wget -r --no-check-certificate $1
的问题是从我的本地机器这个“wget -r --no-check-certificate https://example.com/
”命令作品(它下载我的网站“example.com”的所有页面)但直接从我的HTPSPS服务器托管的VPS启动它时(例如example.com),它不起作用。
在第二种情况下,它只下载index.html。
这里就是我得到的,当我做托管的机器上递归的wget:
$ wget -r --no-check-certificate https://example.com/
--2015-09-06 22:22:12-- https://example.com/
Résolution de example.com (example.com)...
Connexion vers example.com (example.com)...connecté.
Le propriétaire du certificat ne concorde pas avec le nom de l'hôte «example.com»
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 177 [text/html]a
Sauvegarde en : «example.com/index.html»
100%[========================================================================================================================================>] 177 --.-K/s ds 0s
2015-09-06 22:22:12 (5,08 MB/s) - «example.com/index.html» sauvegardé [177/177]
FINISHED --2015-09-06 22:22:12--
Total wall clock time: 0,5s
Downloaded: 1 files, 177 in 0s (5,08 MB/s)
和index.html的是无效的,下面是它的内容:
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
我让你发现我的HTTPS服务器可以在8443端口上访问(我做了一个将HTTPS 443请求重定向到8443端口的重写规则)。
所以我也试过:
wget -r --no-check-certificate https://example.com:8443/
在这种情况下,wget的尝试显然是为了获取所有的网页,但我有一个404 eror来回每一页:
$ wget -r --no-check-certificate https://example.com:8443/
--2015-09-06 22:39:03-- https://example.com:8443/
Résolution de example.com (example.com)...
Connexion vers example.com (example.com)||:8443...connecté.
requête HTTP transmise, en attente de la réponse...303 See Other
Emplacement: index.html [suivant]
--2015-09-06 22:39:04-- https://example.com:8443/index.html
Réutilisation de la connexion existante vers example.com:8443.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 7389 (7,2K) [text/html]
Sauvegarde en : «example.com:8443/index.html»
100%[========================================================================================================================================>] 7 389 --.-K/s ds 0s
2015-09-06 22:39:04 (145 MB/s) - «example.com:8443/index.html» sauvegardé [7389/7389]
Chargement de robots.txt; svp ignorer les erreurs.
--2015-09-06 22:39:04-- https://example.com:8443/robots.txt
Réutilisation de la connexion existante vers example.com:8443.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 138 [text/plain]
Sauvegarde en : «example.com:8443/robots.txt»
100%[========================================================================================================================================>] 138 --.-K/s
更新:我有忘了说,我有一个Twisted python服务器在Apache后面,这个Twisted服务器正在监听端口8443,这就是为什么我已经完成了从443到8443端口的重定向
通过更改Apache配置,使端口443与端口8443具有相同的主机/虚拟主机,您是什么意思?我已经有了下面的重写规则:RewriteRule^/(。*)https://example.com/$1 [R = 301,L]和下面的iptables规则:-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT - 对端口8443。我能做些什么? – youpilat13
首先,当你在同一台机器上时,iptables规则不会对你有所帮助,它只适用于来自其他客户端的传入流量。 ([source](http://askubuntu.com/a/595955/435294))因此,当您在服务器上运行wget时,它会通过端口443连接到Apache,从而跳过iptables规则。 “真实”网站目前仅设置为在端口8443上进行响应。如果您更改指令来处理端口443和8443,则可以解决此问题。 另一种解决方案:看到上面链接的iptables帖子,你可以添加另一个iptables规则到OUTPUT链来重定向本地端口 –
dncook
谢谢,它适用于OUTPUT链! – youpilat13