# [apache] il web server non ï¿½ visibile all'esterno[risolto]

## drumpaul

Ciao a tutti,

come da oggetto il problema ï¿½ presto detto, quindi ora vado a spiegarvi qual'ï¿½ la situzione attuale che mi da questo problema. (Premetto che tempo fa avevo ottenuto risultati ma con una configuraz. di rete + 'semplice' e manco a dirlo apache su winzozz...).

Cmq:

Router/Firewall (dispositivo hardware)

         |

         |

Router/Firewall (Server linux)

         |

         |

       HUB

         |

         |

  -------------------------

  |            |               |

PC1       PC2           PC3

-Il router firewall reindirizza il traffico al server (ip esterno) sulla porta 80;

-Il server reindirizza il traffico all'ip interno sempre porta 80, dove ï¿½ in ascolto apache;

-Utilizzo noip-updater con relativo host 'aggiunto' via web

Ora il problema ï¿½ che quando viene richiesta la pagina il server risponde ma da un errore 404 all'utente remoto e dunque non da accesso alla pagina.

Per la cronaca ho sul server anche bind che mi risolve localmente l'host in modo che posso accedervi anche dagli altri client della rete, inoltre il server ï¿½ accessibile da remoto tramite ssh con l'host registrato su no-ip.

Spero di essere stato chiaro e quanto + preciso possibile e che qualcuno possa illuminarmi su cosa sbaglio!

Grazie,ciaoLast edited by drumpaul on Wed Sep 13, 2006 11:19 am; edited 1 time in total

----------

## ramiel

Scusa ma un errore 404 non è semplicemente di pagina non trovata?

Il server allora funziona bene!Vedi come hai impostato la cartella predefiita di apache e se c'è davvero il file index (htm,l,php?)

Ma internamente alla tua rete invece funziona,non si capisce

ramiel

----------

## drumpaul

All'interno della rete funziona perchè associo l'ip del server al nome host no-ip quindi accedo direttamente al server senza 'uscire' dalla rete.

Per quanto riguarda l'errore lo so, è un banale errore, solo che il percorso nonchè la pagina index sono presenti.

Così a spanne direi che è un problema di permessi, ma non saprei... anche mettendo come utente e gruppo 'apache' nei permessi dei files non cambia nulla.

C'è da dire che lo spazio web che uso per apache risiede su una partizione separata rispetto al sistema, più precisamente uso una reiserfs x la /home dove ospito le pagine web, ma non saprei come possa influire su apache.

Altri suggerimenti?

----------

## koma

ehm... come han detto sopra 404 è pagina non trovata il server viene raggiunto  :Smile:  probabilmente nei virtualhost di apache hai configurato che se arrriva un ip dà il listening di / se invece no da un /bohqualcosa/ come directory di index prova a spulciare i log di errore di apache e guarda che pagina non trova  :Wink: 

----------

## drumpaul

Già infatti dai log vedo che va a cerecare in /usr/htdocs ... ma non capisco come fa a dedurre questo percorso!

Qualcuno sa spiegarmi precisamente come e da dove apache tira fuori questo path?

----------

## diego_82

Posta il tuo httpd.conf

----------

## drumpaul

Farò di meglio: il mio httpd.conf è consultabile a questo indirizzo http://www.seistudio.com/httpd.txt

Così non intaso questo povero forum (ovviamente il file successivamente verrà rimosso).

----------

## Kernel78

Se usi il comando suggerito nella mia firma togli tutti i commenti e puoi permetterti di postare qui il risultato senza intasare il forum  :Wink: 

----------

## drumpaul

e sia...

```

ServerRoot "/usr/lib/apache2"

<IfModule !perchild.c>

</IfModule>

PidFile "/var/run/apache2.pid"

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

<IfModule prefork.c>

    StartServers         5

    MinSpareServers      5

    MaxSpareServers     10

    MaxClients         150

    MaxRequestsPerChild  0

</IfModule>

<IfModule worker.c>

    StartServers         2

    MaxClients         150

    MinSpareThreads     25

    MaxSpareThreads     75 

    ThreadsPerChild     25

    MaxRequestsPerChild  0

</IfModule>

<IfModule perchild.c>

    NumServers           5

    StartThreads         5

    MinSpareThreads      5

    MaxSpareThreads     10

    MaxThreadsPerChild  20

    MaxRequestsPerChild  0

</IfModule>

<IfModule peruser.c>

    ServerLimit          256

    MaxClients           256

    MinSpareProcessors     2

    MaxProcessors         10

    MaxRequestsPerChild 1000

    ExpireTimeout       1800

    Multiplexer nobody nobody

    Processor apache apache

</IfModule>

Listen 8080

LoadModule access_module                 modules/mod_access.so

LoadModule auth_module                   modules/mod_auth.so

LoadModule auth_anon_module              modules/mod_auth_anon.so

LoadModule auth_dbm_module               modules/mod_auth_dbm.so

LoadModule auth_digest_module            modules/mod_auth_digest.so

LoadModule charset_lite_module           modules/mod_charset_lite.so

LoadModule env_module                    modules/mod_env.so

LoadModule expires_module                modules/mod_expires.so

LoadModule headers_module                modules/mod_headers.so

LoadModule mime_module                   modules/mod_mime.so

LoadModule negotiation_module            modules/mod_negotiation.so

LoadModule setenvif_module               modules/mod_setenvif.so

LoadModule log_config_module             modules/mod_log_config.so

LoadModule logio_module                  modules/mod_logio.so

LoadModule cgi_module                    modules/mod_cgi.so

LoadModule cgid_module                   modules/mod_cgid.so

LoadModule suexec_module                 modules/mod_suexec.so

LoadModule alias_module                  modules/mod_alias.so

LoadModule rewrite_module                modules/mod_rewrite.so

<IfDefine USERDIR>

    LoadModule userdir_module            modules/mod_userdir.so

</IfDefine>

<IfDefine INFO>

    LoadModule info_module               modules/mod_info.so

    LoadModule status_module             modules/mod_status.so

</IfDefine>

LoadModule actions_module                modules/mod_actions.so

LoadModule autoindex_module              modules/mod_autoindex.so

LoadModule dir_module                    modules/mod_dir.so

LoadModule ext_filter_module             modules/mod_ext_filter.so

LoadModule deflate_module                modules/mod_deflate.so

LoadModule include_module                modules/mod_include.so

<IfDefine PROXY>

    LoadModule proxy_module                  modules/mod_proxy.so

    LoadModule proxy_connect_module          modules/mod_proxy_connect.so

    LoadModule proxy_ftp_module              modules/mod_proxy_ftp.so

    LoadModule proxy_http_module             modules/mod_proxy_http.so

</IfDefine>

Include /etc/apache2/modules.d/*.conf

User apache

Group apache

ServerAdmin root@localhost

ServerName 192.168.0.10

UseCanonicalName Off

<Directory />

    Options FollowSymLinks

    AllowOverride None

</Directory>

<IfModule mod_userdir.c>

    UserDir public_html

    <Directory /home/*/public_html>

        AllowOverride FileInfo AuthConfig Limit Indexes

        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

        <Limit GET POST OPTIONS PROPFIND>

            Order allow,deny

            Allow from all

       </Limit>

       <LimitExcept GET POST OPTIONS PROPFIND>

            Order deny,allow

            Deny from all

       </LimitExcept>

    </Directory>

</IfModule>

DirectoryIndex index.htm index.html index.html.var

AccessFileName .htaccess

<Files ~ "^\.ht">

    Order allow,deny

    Deny from all

</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>

    MIMEMagicFile /etc/apache2/magic

</IfModule>

HostnameLookups Off

ErrorLog logs/error_log

LogLevel error

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

LogFormat "%v %h %l %u %t \"%r\" %>s %b %T" script

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" VLOG=%{VLOG}e" vhost

CustomLog logs/access_log common

ServerTokens Prod

ServerSignature On

Alias /icons/ "/var/www/localhost/icons/"

<Directory "/var/www/localhost/icons/">

    Options Indexes MultiViews

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/localhost/cgi-bin/

<IfModule mod_cgid.c>

</IfModule>

<Directory "/var/www/localhost/cgi-bin/">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

<IfModule mod_autoindex.c>

    IndexOptions FancyIndexing VersionSort

    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

    AddIconByType (TXT,/icons/text.gif) text/*

    AddIconByType (IMG,/icons/image2.gif) image/*

    AddIconByType (SND,/icons/sound2.gif) audio/*

    AddIconByType (VID,/icons/movie.gif) video/*

    AddIcon /icons/binary.gif .bin .exe

    AddIcon /icons/binhex.gif .hqx

    AddIcon /icons/tar.gif .tar

    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv

    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

    AddIcon /icons/a.gif .ps .ai .eps

    AddIcon /icons/layout.gif .html .shtml .htm .pdf

    AddIcon /icons/text.gif .txt

    AddIcon /icons/c.gif .c

    AddIcon /icons/p.gif .pl .py

    AddIcon /icons/f.gif .for

    AddIcon /icons/dvi.gif .dvi

    AddIcon /icons/uuencoded.gif .uu

    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

    AddIcon /icons/tex.gif .tex

    AddIcon /icons/bomb.gif core

    AddIcon /icons/back.gif ..

    AddIcon /icons/hand.right.gif README

    AddIcon /icons/folder.gif ^^DIRECTORY^^

    AddIcon /icons/blank.gif ^^BLANKICON^^

    DefaultIcon /icons/unknown.gif

    ReadmeName README.html

    HeaderName HEADER.html

    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t .svn

</IfModule>

AddLanguage ca .ca

AddLanguage cs .cz .cs

AddLanguage da .dk

AddLanguage de .de

AddLanguage el .el

AddLanguage en .en

AddLanguage eo .eo

AddLanguage es .es

AddLanguage et .et

AddLanguage fr .fr

AddLanguage he .he

AddLanguage hr .hr

AddLanguage it .it

AddLanguage ja .ja

AddLanguage ko .ko

AddLanguage ltz .ltz

AddLanguage nl .nl

AddLanguage nn .nn

AddLanguage no .no

AddLanguage pl .po

AddLanguage pt .pt

AddLanguage pt-BR .pt-br

AddLanguage ru .ru

AddLanguage sv .sv

AddLanguage zh-CN .zh-cn

AddLanguage zh-TW .zh-tw

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

ForceLanguagePriority Prefer Fallback

AddDefaultCharset ISO-8859-1

AddCharset ISO-8859-1  .iso8859-1  .latin1

AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen

AddCharset ISO-8859-3  .iso8859-3  .latin3

AddCharset ISO-8859-4  .iso8859-4  .latin4

AddCharset ISO-8859-5  .iso8859-5  .latin5 .cyr .iso-ru

AddCharset ISO-8859-6  .iso8859-6  .latin6 .arb

AddCharset ISO-8859-7  .iso8859-7  .latin7 .grk

AddCharset ISO-8859-8  .iso8859-8  .latin8 .heb

AddCharset ISO-8859-9  .iso8859-9  .latin9 .trk

AddCharset ISO-2022-JP .iso2022-jp .jis

AddCharset ISO-2022-KR .iso2022-kr .kis

AddCharset ISO-2022-CN .iso2022-cn .cis

AddCharset Big5        .Big5       .big5

AddCharset WINDOWS-1251 .cp-1251   .win-1251

AddCharset CP866       .cp866

AddCharset KOI8-r      .koi8-r .koi8-ru

AddCharset KOI8-ru     .koi8-uk .ua

AddCharset ISO-10646-UCS-2 .ucs2

AddCharset ISO-10646-UCS-4 .ucs4

AddCharset UTF-8       .utf8

AddCharset GB2312      .gb2312 .gb 

AddCharset utf-7       .utf7

AddCharset utf-8       .utf8

AddCharset big5        .big5 .b5

AddCharset EUC-TW      .euc-tw

AddCharset EUC-JP      .euc-jp

AddCharset EUC-KR      .euc-kr

AddCharset shift_jis   .sjis

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddHandler type-map var

BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

BrowserMatch "RealPlayer 4\.0" force-response-1.0

BrowserMatch "Java/1\.0" force-response-1.0

BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully

BrowserMatch "^WebDrive" redirect-carefully

BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

BrowserMatch "^gnome-vfs" redirect-carefully

<IfDefine INFO>

    ExtendedStatus On

    <Location /server-status>

        SetHandler server-status

        Order deny,allow

        Deny from all

        Allow from localhost

    </Location>

</IfDefine>

<IfDefine INFO>

    <Location /server-info>

       SetHandler server-info

       Order deny,allow

       Deny from all

       Allow from localhost

    </Location>

</IfDefine>

Include /etc/apache2/vhosts.d/*.conf

```

----------

## drumpaul

A questo punto beccatevi anche il vhost

```

NameVirtualHost 192.168.0.10

<IfDefine DEFAULT_VHOST>

<VirtualHost 192.168.0.10>

   ServerName seiserver

    DocumentRoot "/var/www/localhost/htdocs"

    <Directory "/var/www/localhost/htdocs">

        Options Indexes FollowSymLinks

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

    <IfModule peruser.c>

        ServerEnvironment apache apache

        MinSpareProcessors 4

        MaxProcessors 20

    </IfModule>

</VirtualHost>

</IfDefine>

<VirtualHost 192.168.0.10>

   ServerAdmin webmaster@seiserver

    DocumentRoot "/apache/virtualhost/no-ip"

   <Directory "/apache/virtualhost/no-ip">

      AllowOverride None

           Order allow,deny

           Allow from all

   </Directory>

   ServerName seiserver.no-ip.info

   ErrorLog seiserver.no-ip.info-error_log

   CustomLog seiserver.no-ip.info-access_log common

</VirtualHost>

<VirtualHost 192.168.0.10>

   ServerAdmin webmaster@seiserver

   DocumentRoot /apache/virtualhost/dyndns/

   <Directory "/apache/virtualhost/dyndns">

      AllowOverride None

           Order allow,deny

           Allow from all

   </Directory>

   ServerName seiserver.homelinux.org

   ErrorLog seiserver.homelinux.org-error_log

   CustomLog seiserver.homelinux.org-access_log common

</VirtualHost>

```

----------

## .:chrome:.

il tuo router/firewall non è che ha un'interfaccia di configurazione CASUALMENTE messa sulla porta 80? per cui quando ti colleghi non vai sul server, ma bensì sul router?

a parte questo, che te ne fai di un firewall in mezzo tra il server e il router? quella cosa tecnicamente si chiama double-NAT ed è una pratica AMPIAMENTE SCONSIGLIATA, perché contrariamente a quanto sembri introduce un mucchio di problemi di difficile (a volte impossibile) soluzione

----------

## drumpaul

Si posso capire le tue obiezioni, inoltre potrei aggiungere che non è una cosa 'carina' mettere server dati e firewall su una macchina sola... diciamo che questo è il mio serverone di sperimentazione, poi visto che cmq non tengo dati importanti su quel server non penso di aver grosse paranoie di sicurezza...

Venendo alla nostra questione, si, il mio router/firewall ha un'interfaccia, ma risponde solo chiamando l'indirizzo impostato; ti dirò di +, come già detto ai tempi sperimentai con lo stesso router/firewall (che allora era l'unico firewall della mia rete) e riuscii ad avere il mio virtualhost completamente funzionante sulla porta 80, inoltre lo stesso attuale problema lo riscontro anche impostando x bene tutto l'ambaradan sulla porta 8080; infine penso di essere certo che il punto della questione sta nel fatto che apache mi cerca le pagine web in /usr/htdocs anziché il percorso che gli indico nel vhost, quindi questa sarebbe la risposta che voglio.

In ogni caso grazie per l'intervento. Non vorrei esser sembrato 'sgarbato' ma è da un po' che sbatto la testa su 'sta roba e un po' di documentazione l'ho letta... quindi non vedo l'ora di arrivare al dunque e capire dove cavolo ho toppato.

Notte

----------

## .:chrome:.

 *drumpaul wrote:*   

> penso di essere certo che il punto della questione sta nel fatto che apache mi cerca le pagine web in /usr/htdocs

 

questo lo puoi verificare molto semplicemente: basta che guardi l'error_log di apache

io prima verificherei che le connessioni arrivino al server web, e per questo basta un netstat

----------

## X-Drum

potresti mettere sempre in DMZ il pc che ospita apache (se ti fidi)

in ogni caso quando non disponevo di un server (con la S)

tempo fa riuscivo ad esporre 80 e 443 del mio pc passando per router 

(senza ricorrere a dmz e con un router ovviamente provvisto di web interface ).

Quindi devi solo sistemare il NAT (e forse anche i vhost di apache)

----------

## drumpaul

Potrei chiederti cosa intendi precisamente per 'esporre'...

Io ora come ora forwardo tutte le connessioni dal firewall al server e poi sul server/firewall dal server all'indirizzo 'ascoltato', sempre specificando la porta 80 (ho provato anche con la 8080).

Per quanto riguarda i log di apache, forse non mi sono spiegato bene, ma quello che ottengo è proprio che apache va a cercare la pagina web in /usr/htdocs anziché nella cartella che specifico in vhost.

----------

## X-Drum

 *drumpaul wrote:*   

> Potrei chiederti cosa intendi precisamente per 'esporre'...
> 
> Io ora come ora forwardo tutte le connessioni dal firewall al server e poi sul server/firewall dal server all'indirizzo 'ascoltato', sempre specificando la porta 80 (ho provato anche con la 8080).
> 
> 

 

per "esporre" intendo esporre direttamente la macchina all'esterno senza la protezione del firewall 

implementato dal tuo router, in una parola: DMZ.

Ovviamente questa non è l'unica soluzione possibile, puoi anche appunto forwardare tutte le richieste

per le porte 80 e 443 che giungono al tuo router sull'ip della macchina che ospita il web server,

ma come già detto da k.gothmog devi essere certo che il router stesso non sia in ascolto sulla porta 80

(per la famosa web interface di managemente remoto)

 *drumpaul wrote:*   

> 
> 
> Per quanto riguarda i log di apache, forse non mi sono spiegato bene, ma quello che ottengo è proprio che apache va a cercare la pagina web in /usr/htdocs anziché nella cartella che specifico in vhost.

 

hai qualche problema con la tua configurazione, molto probabilmente , rileggila per bene

magari implementa dei vhosts name based dato che disponi di un dns per il tuo host,

inoltre non sappiamo che versione di apache adoperi, se quindi hai o meno configurato

il default_vhost (vedi guide di configurazione apache per gentoo).

ti consiglio anche una lettura del seguente documento:

http://www.gentoo.org/doc/en/apache-upgrading.xml (apache gentoo new configuration style)

----------

## drumpaul

Scusa x-drum... ho postato il mio httpd.conf + 00_default_vhost.conf... non è sufficiente a dedurre tutto quello che chiedi?

magari non la versione di apache (2.0.55 x la cronaca) ma il resto penso proprio di si...

Per quanto riguarda la risposta dell'interfaccia del router sono quasi sicuro che non intralci, cmq come già detto stesso errore anche con la porta 8080...

beh, se non altro proverò a buttarmi sulla soluzione dmz, almeno tolgo qualche dubbio in più

x ora grazie ma non mi sento ancora di mettere il tag risolto

----------

## X-Drum

 *drumpaul wrote:*   

> Scusa x-drum... ho postato il mio httpd.conf + 00_default_vhost.conf... non è sufficiente a dedurre tutto quello che chiedi?
> 
> 

 

oh ma scusami tanto!!!!!

 *drumpaul wrote:*   

> 
> 
> magari non la versione di apache (2.0.55 x la cronaca) ma il resto penso proprio di si...
> 
> Per quanto riguarda la risposta dell'interfaccia del router sono quasi sicuro che non intralci, cmq come già detto stesso errore anche con la porta 8080...
> ...

 

prego e buona fortuna, da parte mia di sicuro non ci saranno piu' reply

----------

## drumpaul

Ehm leggo solo ora il reply.... spero che X-drum non te la sia presa (ma soprattutto non so per cosa te la sia potuta prendere), forse hai percepito un tono che non volevo assumere... col testo Ã¨ difficile comunicare il tono con cui si vuole esprimere un messaggio!

Nel caso tengo a sottolineare che non era mia intenzione risultare scortese anche perchÃ© chiedendo aiuto in questo forum sicuramente tengo rispetto di chiunque anche solo cerchi di aiutarmi, figurarsi di qualcuno che sicuramente ne sa piÃ¹ di me.

A parte questo non ho ancora risolto la questione perchÃ© non ho avuto abbastanza tempo, ma mi riprometto di rimetterci in mano magari a breve con le 'vacanze' estive.

Ciao a tutti.

----------

## makoomba

Moved from Forum italiano (Italian) to Forum di discussione italiano.

----------

## drumpaul

Ok ragazzi ho risolto!

Al termine delle vacanze avevo bisogno di sistemare definitivamente questa cosa mi son rimesso dietro...

Il risultato Ã¨ quello che volevo ottenere, cioÃ¨ un server visibile all'esterno.

Cerco di riassumere il piÃ¹ brevemente possibile come fare.

Premesso che ho un ip dinamico e il server apache in un server/router/firewall dietro un router/firewall (...non chiedetemi spiegazioni, a me piace cosÃ¬!  :Wink:  )

- Ho creato il mio hostname su no-ip e ho installato il relativo applicativo su gentoo assicurandomi che inviasse l'indirizzo corretto;

- Ho reindirizzato il traffico proveniente dalla porta 80 e diretto al router 'esterno', all'indirizzo 'esterno' del server (sempre porta 80);

- Ho reindirizzato il traffico diretto al server sull'indirizzo interno su cui Ã¨ in ascolto apache con iptables (sempre porta 80);

-Ho abilitato il traffico http (80) in entrata sul server (iptables filter)

- Ho impostato apache come segue:

listen ipinternoserver:80

servername hostname_server

Namevirtualhost ipinternoserver:80

<virtualhost ipinternoserver:80>

servername hostname_no-ip

</virtualhost>

- Ho configurato bind in modo che all'indirizzo interno del server corrispondesse l'hostname configurato su no-ip

Un'altro modo ke ho sperimentato x curiositÃ  e che comunque funziona Ã¨ in breve indirizzare il traffico dal router 'esterno' all'indirizzo 'esterno' del server e mettere in ascolto apache sull'indirizzo esterno con le conseguenti modifiche nelle direttive namevirtualhost e virtualhost sempre sul modello della soluzione sopra esposta!

Questo Ã¨ tutto, non dovrei aver dimenticato nulla... probabilmente avevo tralasciato qualcosa nei tentativi precedenti, ma ora funge alla grande!

Grazie a tutti comunque per il supporto!

Ciao ciao

----------

