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
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;
}
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