I think the following crontab should work:
0 0 1 * * /etc/nginx/logrotate.monthly.sh
Where /etc/nginx/logrotate.monthly.sh should have the following content:
find /var/www/logs/ -name "*log" -exec \
mv -i {} {}.`sh -c 'date -r $(expr $(date +%s) - 1209600) +%Y-%m'` \; ; \
kill -USR1 `cat /var/run/nginx.pid`
The -i
option to mv
is important to ensure that files don't get overwritten. We get the date for the filename by moving today's date two weeks back (as per « tcsh: print date 2 weeks ago in shell »).