엔진엑스를 사용하면서 문제가 되었던 것과 해결책이 있으면, 그것을 적어 둡니다.
Nginx modules
버전 1.21.5에서 pcre2를 지원하면서, 타사 모듈 중에 http-subs-filter, http-lua, http-fancyindex 모듈 등이 컴파일이 되지 않거나, 로딩이 되지 않거나, 오동작을 일으킵니다. http-subs-filter는 패치가 제공되고, http-lua 모듈은 1.21.6 배포 후에 정보가 제공될 것으로 기대되고, fancyindex는 아직 소식이 없습니다.
디렉토리 목록화
보통 ftp 서버를 이용해서, 파일을 제공하지만, 최근에 ftp 클라이언트를 웹 브라우저에서 제거하는 경향이 있습니다. 만약 ftp로 접근하고 싶으면, ftp 전용 클라이언트, 예를 들어 FileZilla를 이용해야 합니다. 게다가 클라이언트 디바이스는 점점 모바일 기기가 증가하는 추세이므로, 가능한 웹 브라우저에서 로컬 파일에 접근하도록 설정하는 것이 필요해 보입니다.
location /directory_name/ {
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
한편, 웹 페이지에서 위의 디렉토리 아래의 특정 하위 디렉토리로 접근하고 싶으면, 끝에 슬래쉬를 붙여야 합니다. 그렇지 않으면, 포트가 붙어서 출력되기 때문에 목록을 보여주지 못할 수 있습니다.
1.18.0 compile
Gcc-10에서 컴파일 오류가 발생합니다. Gcc-9으로 변경해서 컴파일해 보시기 바랍니다.
413 Request Entity Too Large
파일 업로드에 대한 설정은 미디어위키 자체에서, php에서, nginx에서 모두 가능합니다. 당연히 최하 값으로 설정된 부분의 영향을 받습니다. /etc/nginx/nginx.conf에 씁니다.
http {
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 25m; # 이 값을 수정합니다.
당연히 서비스를 재시작해야 적용됩니다.
- sudo systemctl restart nginx
Anacron
시스템 부팅과 함께, Anacron job 'cron.daily' 오류가 생깁니다. 오류 내용은 다음과 같습니다:
error: word unexpected error: error running shared prerotate script for '/var/log/nginx/*.log'
로그 회전에 대한 /etc/logrotate.d/nginx의 설정 오류입니다. 다음과 같이 바꾸어 줍니다.
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
/usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl
endscript
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
VMware Workstaion
Nginx에서 443번 포트를 사용하려면 문제가 생깁니다. 이미 vmware-workstation이 443번 포트를 사용하고 있기 때문입니다.
- vmware workstation을 실행합니다.
- Edit > Preferences을 누릅니다.
- Shared VMs을 선택합니다.
- Workstation Server Settings를 사용하지 않거나 포트를 바꿉니다.
Buffer size
Php7.1이 7.0보다는 반응 속도등의 개선이 있어서 php7.1-fpm을 사용하면서부터 Tools->SpecialPages를 누르면 502 bad gateway가 발생했습니다.
우선 서버의 오류를 확인해 보니 다음과 같습니다.
- tail -l /var/log/nginx/error.log
...
2017/05/14 23:47:01 [error] 1302#1302: *33 upstream sent too big header while reading response header from upstream, client: 175.198.228.230, server: brajo.ddns.com, request: "GET /wiki/Special:SpecialPages HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.1-fpm.sock:", host: "brajo.duckdns.org", referrer: "http://brajo.duckdns.org/wiki/Special:WhatLinksHere/Category:Core_System"
2개의 설정파일을 수정해 주어야 합니다. 먼저 /etc/nginx/nginx.conf를 수정합니다.
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
/etc/nginx/site-available/default를 수정합니다.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
## # With php5-cgi alone:
## fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_read_timeout 300;
# buffer_size increase
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
설정을 수정하고 나면 서버를 재시작해야 합니다.
- sudo systemctl restart nginx
400 Bad Request
파이어폭스 62.0a1 (2018-05-28)에서 다음과 같은 오류가 생깁니다.
Request Header Or Cookie Too Large
이 오류는 처음 접하는 파이어폭스나 크롬에서는 발생하지 않습니다. 일정 시간이 지나서 사이트의 데이터가 쌓이게 되면 발생하는 것으로 보입니다.
다음 위치에서 해당 사이트의 데이터를 삭제해 줍니다.
Preferences->Privacy & Security->Cookies and Site data->Manage Data