Pourquoi je ne peux pas me connecter à mon site HTTP par curl?

J'ai un site web @ www.eshipp.com, L'ensemble du domaine est protégé SSL, Par conséquent, tout trafic HTTP est redirigé NGINX sur l'URL équivalent HTTPS.

Cependant, il semble que certains utilisateurs ne soient pas redirigés, puis d'obtenir une erreur HTTP "pas disponible".

Depuis que je n'ai moi-même aucune erreur dans le navigateur, il est difficile de déboguer, mais j'ai heureusement découvert que l'utilisation Curl Provoque cette erreur:

$ curl -v [url=http://eshipp.com/]http://eshipp.com/[/url]
* Hostname was NOT found in DNS cache
* Trying 198.199.96.110...
* connect to 198.199.96.110 port 80 failed: Connection timed out
* Failed to connect to eshipp.com port 80: Connection timed out
* Closing connection 0
curl: (7) Failed to connect to eshipp.com port 80: Connection timed out

La commande ci-dessus ne fonctionne pas, mais les travaux suivants:

curl -v [url=https://eshipp.com/]https://eshipp.com/[/url]

* Hostname was NOT found in DNS cache
* Trying 198.199.96.110...
* Connected to eshipp.com (198.199.96.110) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
* subject: OU=Domain Control Validated; OU=Gandi Standard SSL; CN=eshipp.com
* start date: 2015-07-13 00:00:00 GMT
* expire date: 2016-07-13 23:59:59 GMT
* subjectAltName: eshipp.com matched
* issuer: C=FR; ST=Paris; L=Paris; O=Gandi; CN=Gandi Standard SSL CA 2
* SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: eshipp.com
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx is not blacklisted
< Server: nginx
< Date: Sat, 08 Aug 2015 22:10:56 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Strict-Transport-Security: max-age=31536000; includeSubdomains
<
html

Voici une configuration NGINX:

# HTTP
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.eshipp.com eshipp.com;
return 301 https://$server_name$request_uri;
}

# HTTPS
server {
listen 443 ssl spdy;
server_name www.eshipp.com eshipp.com;
keepalive_timeout 10m;

# Certificats SSL
ssl_certificate /etc/nginx/ssl/eshipp.com.crt;
ssl_certificate_key /etc/nginx/ssl/eshipp.com.key;

# Amélioration des performances SSL
ssl_stapling on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# Amélioration de la sécurité SSL
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SH$

# Active le HSTS to avoid SSL stripping
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

# If your application is not compatible with IE <= 10, this will redirect visitors to a page advising a browser update
# This works because IE 11 does not present itself as MSIE anymore
if ($http_user_agent ~ "MSIE" ) {
return 303 [url=https://browser-update.org/update.html;]https://browser-update.org/update.html;[/url]
}

location / {
proxy_pass [url=http://127.0.0.1:3000;]http://127.0.0.1:3000;[/url]
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # allow websockets
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP

# this setting allows the browser to cache the application in a way compatible with Meteor
# on every application update the name of CSS and JS file is different, so they can be cache infinitely (here: 30 da$
# the root path (/) MUST NOT be cached
if ($uri != '/') {
expires 30d;
}
}
}

ÉDITER

Eh bien, j'ai constaté que le problème se pose en raison des règles du pare-feu, mais je ne sais pas lequel d'entre eux bloque le trafic http. Quelqu'un peut-il m'aider?

# INPUT rules
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -m limit --limit 50/second --limit-burst 50 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/sec -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

ÉDITER 2

Je devais ajouter cette règle pour déverrouiller la circulation, mais ceci est un problème, car je ne veux pas ouvrir le port 3000 Sur Internet, il n'est utilisé que localement par l'application. NodeJS .. J'ai essayé S.

-i lo

Mais ça ne marche pas ..

iptables -A INPUT -i eth0 -p tcp --dport 3000 -j ACCEPT
Invité:

Giselle

Confirmation de:

La raison pour laquelle votre équipe CURL Cela ne fonctionne pas, réside dans le fait que vous n'effectuez pas de redirections:
http://curl.haxx.se/docs/faq.h ... w_HTT
Essayer: curl -Lv
http://eshipp.com/
En regardant les règles de la table IP, Vous limitez assez agressivement la vitesse des connexions à 443 et 80. C'est peut-être la cause

quelques

Vos clients ne savent pas comment collecter.

De plus, dans ces 2 règles que vous autorisez seulement une nouvelle connexion (et limiter leur vitesse). Je vous suggère de les changer en incluant l'installation installée, ainsi qu'un nouveau.


iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT

changement

--state NEW

être

--state NEW,ESTABLISHED

FWIW: J'ai réussi à tordre URI

Et support d'information supplémentaire SPDY Supprimer Google, Depuis sa fonctionnalité est intégrée à HTTP / 2.
http://blog.chromium.org/2015/ ... .html

Pour répondre aux questions, connectez-vous ou registre