Hi,
What is a recommended way of hosting or creating a mirror of a website that is blocked in a country. Any suggestions are greatly welcome.
Hi,
What is a recommended way of hosting or creating a mirror of a website that is blocked in a country. Any suggestions are greatly welcome.
Do you have any restrictions, special needs? The first and straightforward way is to set up a reverse proxy for the website, for example, with nginx.
It is for a Joomla website.
Something like this.
Not sure if it’s what you’re looking for, but there are some (paid) hosting services that are supposed to provide high availability (by deploying mirrors, proxies, etc.). I don’t have personal experience with how well they work.
Depending on how much control you have over the server, and how targeted the blocking is, Geneva has a post/paper on server-side evasion.
Thanks for all the suggestions.
I am trying to find an “easy” way to set a mirror of a website.
@ValdikSS If I set a reverse Nginx proxy where shall I point they proxy to? Wouldn’t that proxied IP not get blocked too?
The reverse proxy has to be located outside the censor’s zone of control. That way there is an uncensored path between the reverse proxy and the original web site.
There are some third-party proxies that can sometimes be used to get around simple blocks. (Won’t work with sites requiring login, etc.) For example,
I was looking into the idea of web mirrors again when I found this topic.
If your mirror doesn’t need to download larges files, you can use Cloudflare workers & pages.
Unfortunately, it seems workers.dev is blocked in Russia, mainland China, Turkmenistan and other countries.
Example: https://community.openguides.workers.dev.
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
url.hostname = 'community.torproject.org' // Set the hostname
const response = await fetch(url.toString())
const contentType = response.headers.get('Content-Type')
// Check if the response is HTML
if (contentType && contentType.includes('text/html')) {
let text = await response.text()
// Rewrite URLs in the response body
text = text.replace(/community\.torproject\.org/g, 'community.openguides.workers.dev')
return new Response(text, {
headers: response.headers,
status: response.status,
statusText: response.statusText
})
} else {
// Return the response as-is for non-HTML content
const responseClone = response.clone()
return new Response(responseClone.body, {
headers: response.headers,
status: response.status,
statusText: response.statusText
})
}
}
del
i wrote about google translate here before, but it turns out that it uses google global cache servers in russia (where i am) and they can’t open blocked websites
i remember that this method worked in turkmenistan some time ago, but now the ip address for translating websites is blocked
IPFS allows publishing static websites in a federated (different ipfs gateways are federations) or distributed way (local ipfs-node communicates with the rest of the ipfs network). The last time I looked at ipfs was long ago and unfortunately this approach was easy to be blocked.
The steps:
See: