Skip to main content

CONFIGURANDO O HTTPS


PASTA ONDE ESTÁ O CERTIFICADO
/etc/nginx/certs/
CERTIFICADOS USADOS

O certificado fullchain.pem foi criado da seguinte forma:

cat scielo.org.za.pem > fullchain.pem
cat gd_bundle-g2-g1.crt >> fullchain.pem 
CONFIGURANDO O NGINX
vi /etc/nginx/conf.d/scielo_org_za.conf
# caching path
proxy_cache_path /var/www/cache levels=1:2 keys_zone=cache:60m inactive=120m;

upstream scielo {
    server localhost:8080;
}

server {
    listen 443 ssl;
    server_name scielo.org.za www.scielo.org.za;
    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;
    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
#    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;
    keepalive_timeout   150s;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-SSL-Protocal $ssl_protocol;
        proxy_redirect http:// $scheme://;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://scielo;
        proxy_http_version 1.1;
        proxy_read_timeout 900s;
        proxy_cache cache;
        proxy_cache_valid any 10m;
        add_header X-Proxy-Cache $upstream_cache_status;
    }

    gzip on;
    access_log /var/www/apache/scielo-org-za.log;
    error_log /var/www/apache/scielo-org-za-error.log warn;
}

server {
    listen 80;
    server_name scielo.org.za www.scielo.org.za;
    return 301 https://$server_name$request_uri;
}
CONFIGURANDO O APACHE
vi /etc/httpd/conf/httpd.conf
alterar de:
Listen *:80
para Listen *:8080
vi /etc/httpd/conf.d/vhosts/vhosts.conf
DE:
NameVirtualHost *:80
PARA:
NameVirtualHost *:8080
<VirtualHost *:8080>
   ServerName www.scielo.org.za
   ServerAlias scielo4.scielo.org.za

   Alias /pdf/ /var/www/scielo/bases/pdf/
   Alias /img/fbpe/ /var/www/scielo/htdocs/img/revistas/
   Alias /img/scimago/ /var/www/scielo/bases/scimago/images/
   DocumentRoot /var/www/scielo/htdocs
   DirectoryIndex scielo.php index.php index.html index.htm
   <Directory /var/www/scielo/htdocs>        
       Options  FollowSymLinks MultiViews
       AcceptPathInfo On
       Order deny,allow
       Allow from all
   </Directory>
   <Directory /var/www/scielo/bases/pdf/>
       Options  FollowSymLinks MultiViews
       AcceptPathInfo On
       Order deny,allow
       Allow from all
   </Directory>
   <Directory /var/www/scielo/bases/scimago/images/>
       Options  FollowSymLinks MultiViews
       AcceptPathInfo On
       Order deny,allow
       Allow from all
   </Directory>
   ScriptAlias /cgi-bin/ /var/www/scielo/cgi-bin/
   <Directory /var/www/scielo/cgi-bin/>
       Options  FollowSymLinks MultiViews
       AcceptPathInfo On
       Order deny,allow
       Allow from all
   </Directory>

   ErrorLog  "| /usr/sbin/rotatelogs -l /var/www/apache/%Y-%m-%d+scielo-za-error.log 6M"
   CustomLog "| /usr/sbin/rotatelogs -l /var/www/apache/%Y-%m-%d_scielo.za.log 5M" combined
</VirtualHost>
AJUSTANDO O SCRIPT DE LOG

Os logs agora ficará no padrão scielo-org-za.log e scielo-org-za-error.log

vi /var/www/scielo/scripts/compacta-logs-scielo-za.sh
#!/bin/bash
#Author: Rondineli Saad
#Create in: 2024-04-11
#Version: 0.2
#Description:  compacta os logs do apache e move para pasta com seu respectivo ano/mes/nome da instancia.

DIR_SOURCE="/var/www/apache"
DATE_YESTERDAY=`date -d "yesterday"  +"%Y-%m-%d"`
MONTH_ATU=`date "+%B"`
MONTH_LAST=`date '+%B' --date '1 month ago'`
CURRENT_DAY=`date '+%d'`
YEAR_ATU=`date "+%Y"`
INSTANCE_NAME="scielo-org-za"
export LC_ALL=en_US.UTF-8
export LANG

################################################
#ftp variables
################################################
HOST='ftp.ratchet.scielo.org'
USER='scielo.za'
PASSWD='africadosul@2006'
FILE_LOCAL=${DATE_YESTERDAY}_${instance}.log.gz
FILE_REMOTE=${FILE_LOCAL}
###############################################

# Esta instrução valida a se o arquivo de log do dia anterior existe, se sim é compactado
cd $DIR_SOURCE
for instance in $INSTANCE_NAME; do
      if [ -e $DIR_SOURCE/${instance}.log ]
        then
           cd $DIR_SOURCE
           mv ${instance}.log ${DATE_YESTERDAY}_${instance}.log
           /bin/gzip ${DATE_YESTERDAY}_${instance}.log
      else
        echo "Arquivo do dia anterior nao existe!"
     fi
done
sleep 1

if [ -f /var/run/nginx.pid ]; then
  kill -USR1 `cat /var/run/nginx.pid`
fi

# Esta instrução valida a existência da pasta referente ao ano;
cd $DIR_SOURCE
for instance in $INSTANCE_NAME; do
  if [ -d ${YEAR_ATU} ]
    then
      echo "Diretorio ja existe"
  else
    mkdir ${YEAR_ATU}
  fi
done
sleep 1

# Esta instrução valida a existência da pasta referente ao mês;
cd $DIR_SOURCE
for instance in $INSTANCE_NAME; do
  if [ -d ${YEAR_ATU}/${MONTH_ATU} ]
    then
      echo "Diretorio ja existe!"
  else
      mkdir ${YEAR_ATU}/${MONTH_ATU}
  fi
done
sleep 1

#Esta instrucao envia o arquivo gerado para o servidor de ftp
ftp -n -v $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary
put  ${FILE_LOCAL} ${FILE_REMOTE}
quit
END_SCRIPT

# Como a compactação sempre ocorre no dia seguinte, este dia seguinte pode ser o dia primeiro do mês. Caso não valide se
# o dia é o primeiro o arquivo será transferido para o mês atual e não o anterior. Após a validação o arquivo de log é removido
# e o arquivo compactado é movido para a pasta com seu nome.
cd $DIR_SOURCE
for instance in $INSTANCE_NAME; do
    if [ $CURRENT_DAY -eq 1 ];
      then
        mv ${DATE_YESTERDAY}_${instance}.log.gz ${YEAR_ATU}/${MONTH_LAST}/
    else
        mv ${DATE_YESTERDAY}_${instance}.log.gz ${YEAR_ATU}/${MONTH_ATU}/
    fi
done
sleep 1

# Removing apache log error greater than 5 days
find $DIR_SOURCE -mtime +5 -name'*-error.log.gz' -exec rm {} \;
INFORMAÇÕES IMPORTANTES
  • O Apache escutará na porta 8080;
  • Os logs do Apache não serão mais usados;
  • O nginx atenderá a porta 80 e 443;
  • Os logs válidos são do nginx;
  • O cache do nginx foi ativado por 1 hora.