Nginx가 컴파일 된 플래그를 어떻게 알 수 있습니까? 추가 된

nginx 설치에 추가 된 모듈을 어떻게 확인할 수 있습니까?



답변

nginx -V구성된 모든 모듈을 나열합니다. 명시적인 enable / load 명령이 없습니다.


답변

확산 가능한 원 라이너 :

2>&1 nginx -V | tr -- - '\n' | grep _module

두 환경을 비교하는 데 편리합니다.

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

편집하다:

Roman Newaza에게 --without모듈 컴파일 플래그가 포함되어 있음을 올바르게 지적 해 주셔서 감사합니다 . 나는 --without플래그를 사용 하지 않고 모듈 목록을 얻는 데 집중했기 때문에 그것을 잡지 못했습니다. one-liner는 다음과 같이 두 설치 사이에서 diff 컴파일 플래그를 돕기 위해 수정 될 수 있습니다.

2>&1 nginx -V | tr ' '  '\n'

이는 다음과 같습니다.

2>&1 nginx -V | xargs -n1

어쩌면 sort컴파일 플래그의 특유의 순서를 표준화하고 tr다시 할당 가능한 라인으로 할당을 분할 하기 위해 파이프를 통과 시킬 수도 있습니다. 최종 결과:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

sort두 원격 호스트에서 모두 동일하게 작동하는 경우 (즉, 둘 다 GNU 또는 BSD 임) 작동합니다. Linux를 BSD (Mac OS X)와 비교하는 경우, | sort | tr = '\n'조각을 lsmodn로컬 쉘로 옮기면 sort됩니다.

lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn  | sort | tr = '\n')

메시 어지 만 작동합니다.


답변

  • nginx -V명령 (대문자 V)는 모든 모듈뿐만 아니라 다른 컴파일시 옵션을 나열합니다 :

    %nginx -V
    nginx version: nginx/1.2.2
    built by gcc 4.2.1 20070719
    TLS SNI support enabled
    configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
    %

    sudo수퍼 유저 권한은 nginx에 의해 아래 포트 IPPORT_RESERVED(예 : 1024 아래 포트) 및 / 또는 쓰기를위한 특정 로그 파일을 열기 위해서만 필요하므로이 명령 은 필요하지 않습니다 .

    그러나 사용자에 따라 $PATH설정, 당신은 전체 경로를 지정해야 할 수도 있습니다 중 – 예를 들어, /usr/sbin/nginx -V또는 실제로 사용하는 sudo적절한 필요에 대한 /sbin/에 포함 할 디렉토리를 $PATH.

  • 새로운 Nginx의 출시를 시작으로 – 이후 nginx 1.9.11(2 월 (2016)) – 동적으로로드 모듈이 지원됩니다 , 너무 – http://nginx.org/r/load_module을 -의 도움으로 load_module지시자.


답변

nginx -V 모든 모듈을 표시하지는 않지만 약 20 개의 모듈이 표시됩니다.

내가 사용하는 strings /usr/sbin/nginx|grep _module|grep -v configure| sort내 nginx를 모든 200 개 + 모듈을 나열한다.

나는 또한 시도 objdump했지만 설치에서 nginx가 바이너리가 제거 된 것처럼 보입니다.