<div dir="ltr">Hi Sergey,<br><div><br></div><div>I have fixed the issue by adding the below line in main context of nginx.conf file</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">load_module modules/ngx_http_cache_purge_module.so;</blockquote><div><br></div><div>#cat /etc/nginx/nginx.conf</div><div>user  nginx;<br>worker_processes  auto;<br><br>error_log  /var/log/nginx/error.log notice;<br>pid        /var/run/nginx.pid;<br><b>load_module modules/ngx_http_cache_purge_module.so;<br></b><br>events {<br>    worker_connections  1024;<br>}<br><br><br>http {<br>    include       /etc/nginx/mime.types;<br>    default_type  application/octet-stream;<br><br>    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '<br>                      '$status $body_bytes_sent "$http_referer" '<br>                      '"$http_user_agent" "$http_x_forwarded_for"';<br><br>    access_log  /var/log/nginx/access.log  main;<br><br>    sendfile        on;<br>    #tcp_nopush     on;<br><br>    keepalive_timeout  65;<br><br>    #gzip  on;<br><br>    include /etc/nginx/conf.d/*.conf;<br>}</div><div><br></div><div># nginx -t -c /etc/nginx/nginx.conf<br>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok<br>nginx: configuration file /etc/nginx/nginx.conf test is successful<br>#<br><br></div><div>Best Regards,</div><div><br></div><div>Kaushal</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 8, 2022 at 10:28 AM Kaushal Shriyan <<a href="mailto:kaushalshriyan@gmail.com">kaushalshriyan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<br><div><br></div><div>I am able to fix the issue below.</div><div><br></div><div><div>#nginx -t -c /etc/nginx/nginx.conf<br></div><div><font color="#ff0000">nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_cache_purge_module.so" version 1020002 instead of 1020001 in /usr/share/nginx/modules/ngx-http-cache-purge-module.conf:1<br></font>nginx: configuration file /etc/nginx/nginx.conf test failed</div></div><div><br></div><div><div>Nginx Version :- nginx version: nginx/1.20.2<br></div><div>OS Version :- CentOS Linux release 7.9.2009 (Core)</div></div><div><br></div><div>cd /home/kaushal/nginx-1.20.2/</div><div>#./configure --with-compat --add-dynamic-module=../ngx-cache-purge<br>checking for OS<br> + Linux 3.10.0-1160.62.1.el7.x86_64 x86_64<br>checking for C compiler ... found<br> + using GNU C compiler<br> + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)<br>checking for gcc -pipe switch ... found<br>checking for -Wl,-E switch ... found<br>checking for gcc builtin atomic operations ... found<br>checking for C99 variadic macros ... found<br>checking for gcc variadic macros ... found<br>checking for gcc builtin 64 bit byteswap ... found<br>checking for unistd.h ... found<br>checking for inttypes.h ... found<br>checking for limits.h ... found<br>checking for sys/filio.h ... not found<br>checking for sys/param.h ... found<br>checking for sys/mount.h ... found<br>checking for sys/statvfs.h ... found<br>checking for crypt.h ... found<br>checking for Linux specific features<br>checking for epoll ... found<br>checking for EPOLLRDHUP ... found<br>checking for EPOLLEXCLUSIVE ... not found<br>checking for eventfd() ... found<br>checking for O_PATH ... found<br>checking for sendfile() ... found<br>checking for sendfile64() ... found<br>checking for sys/prctl.h ... found<br>checking for prctl(PR_SET_DUMPABLE) ... found<br>checking for prctl(PR_SET_KEEPCAPS) ... found<br>checking for capabilities ... found<br>checking for crypt_r() ... found<br>checking for sys/vfs.h ... found<br>checking for nobody group ... found<br>checking for poll() ... found<br>checking for /dev/poll ... not found<br>checking for kqueue ... not found<br>checking for crypt() ... not found<br>checking for crypt() in libcrypt ... found<br>checking for F_READAHEAD ... not found<br>checking for posix_fadvise() ... found<br>checking for O_DIRECT ... found<br>checking for F_NOCACHE ... not found<br>checking for directio() ... not found<br>checking for statfs() ... found<br>checking for statvfs() ... found<br>checking for dlopen() ... not found<br>checking for dlopen() in libdl ... found<br>checking for sched_yield() ... found<br>checking for sched_setaffinity() ... found<br>checking for SO_SETFIB ... not found<br>checking for SO_REUSEPORT ... found<br>checking for SO_ACCEPTFILTER ... not found<br>checking for SO_BINDANY ... not found<br>checking for IP_TRANSPARENT ... found<br>checking for IP_BINDANY ... not found<br>checking for IP_BIND_ADDRESS_NO_PORT ... found<br>checking for IP_RECVDSTADDR ... not found<br>checking for IP_SENDSRCADDR ... not found<br>checking for IP_PKTINFO ... found<br>checking for IPV6_RECVPKTINFO ... found<br>checking for TCP_DEFER_ACCEPT ... found<br>checking for TCP_KEEPIDLE ... found<br>checking for TCP_FASTOPEN ... found<br>checking for TCP_INFO ... found<br>checking for accept4() ... found<br>checking for int size ... 4 bytes<br>checking for long size ... 8 bytes<br>checking for long long size ... 8 bytes<br>checking for void * size ... 8 bytes<br>checking for uint32_t ... found<br>checking for uint64_t ... found<br>checking for sig_atomic_t ... found<br>checking for sig_atomic_t size ... 4 bytes<br>checking for socklen_t ... found<br>checking for in_addr_t ... found<br>checking for in_port_t ... found<br>checking for rlim_t ... found<br>checking for uintptr_t ... uintptr_t found<br>checking for system byte ordering ... little endian<br>checking for size_t size ... 8 bytes<br>checking for off_t size ... 8 bytes<br>checking for time_t size ... 8 bytes<br>checking for AF_INET6 ... found<br>checking for setproctitle() ... not found<br>checking for pread() ... found<br>checking for pwrite() ... found<br>checking for pwritev() ... found<br>checking for strerrordesc_np() ... not found<br>checking for sys_nerr ... found<br>checking for localtime_r() ... found<br>checking for clock_gettime(CLOCK_MONOTONIC) ... found<br>checking for posix_memalign() ... found<br>checking for memalign() ... found<br>checking for mmap(MAP_ANON|MAP_SHARED) ... found<br>checking for mmap("/dev/zero", MAP_SHARED) ... found<br>checking for System V shared memory ... found<br>checking for POSIX semaphores ... not found<br>checking for POSIX semaphores in libpthread ... found<br>checking for struct msghdr.msg_control ... found<br>checking for ioctl(FIONBIO) ... found<br>checking for ioctl(FIONREAD) ... found<br>checking for struct tm.tm_gmtoff ... found<br>checking for struct dirent.d_namlen ... not found<br>checking for struct dirent.d_type ... found<br>checking for sysconf(_SC_NPROCESSORS_ONLN) ... found<br>checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found<br>checking for openat(), fstatat() ... found<br>checking for getaddrinfo() ... found<br>configuring additional dynamic modules<br>adding module in ../ngx-cache-purge<br> +  was configured<br>checking for PCRE library ... found<br>checking for PCRE JIT support ... found<br>checking for zlib library ... found<br>creating objs/Makefile<br><br>Configuration summary<br>  + using system PCRE library<br>  + OpenSSL library is not used<br>  + using system zlib library<br><br>  nginx path prefix: "/usr/local/nginx"<br>  nginx binary file: "/usr/local/nginx/sbin/nginx"<br>  nginx modules path: "/usr/local/nginx/modules"<br>  nginx configuration prefix: "/usr/local/nginx/conf"<br>  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"<br>  nginx pid file: "/usr/local/nginx/logs/nginx.pid"<br>  nginx error log file: "/usr/local/nginx/logs/error.log"<br>  nginx http access log file: "/usr/local/nginx/logs/access.log"<br>  nginx http client request body temporary files: "client_body_temp"<br>  nginx http proxy temporary files: "proxy_temp"<br>  nginx http fastcgi temporary files: "fastcgi_temp"<br>  nginx http uwsgi temporary files: "uwsgi_temp"<br>  nginx http scgi temporary files: "scgi_temp"<br><br>#make modules</div><div>make -f objs/Makefile modules<br>make[1]: Entering directory `/home/kaushal/nginx-1.20.2'<br>cc -c -fPIC -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \<br> -o objs/addon/ngx-cache-purge/ngx_cache_purge_module.o \<br>      ../ngx-cache-purge/ngx_cache_purge_module.c<br>cc -c -fPIC -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \<br>        -o objs/ngx_http_cache_purge_module_modules.o \<br>       objs/ngx_http_cache_purge_module_modules.c<br>cc -o objs/ngx_http_cache_purge_module.so \<br>objs/addon/ngx-cache-purge/ngx_cache_purge_module.o \<br>objs/ngx_http_cache_purge_module_modules.o \<br>-shared<br>make[1]: Leaving directory `/home/kaushal/nginx-1.20.2'<br></div><div><br></div><div>#cp ngx_http_cache_purge_module.so /etc/nginx/modules<br></div><div><br></div><div><div>cd /home/kaushal/ngx-cache-purge/</div><div># ls -l<br>total 64<br>-rw-r--r-- 1 root root   728 May  8 02:48 config<br>-rw-r--r-- 1 root root 51501 May  8 02:48 ngx_cache_purge_module.c<br>-rw-r--r-- 1 root root  5090 May  8 02:48 README.md<br># cat config<br>if [ "$HTTP_PROXY" = "YES" ]; then<br>    have=NGX_HTTP_PROXY . auto/have<br>fi<br><br>if [ "$HTTP_FASTCGI" = "YES" ]; then<br>    have=NGX_HTTP_FASTCGI . auto/have<br>fi<br><br>if [ "$HTTP_SCGI" = "YES" ]; then<br>    have=NGX_HTTP_SCGI . auto/have<br>fi<br><br>if [ "$HTTP_UWSGI" = "YES" ]; then<br>    have=NGX_HTTP_UWSGI . auto/have<br>fi<br><br>if test -n "$ngx_module_link"; then<br>    ngx_module_type=HTTP<br>    ngx_module_name=ngx_http_cache_purge_module<br>    ngx_module_srcs="$ngx_addon_dir/ngx_cache_purge_module.c"<br><br>    have=NGX_CACHE_PURGE_MODULE . auto/have<br><br>    . auto/module<br>else<br>    HTTP_MODULES="$HTTP_MODULES ngx_http_cache_purge_module"<br>    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_cache_purge_module.c"<br><br>    have=NGX_CACHE_PURGE_MODULE . auto/have<br>fi<br>#<br></div><div># pwd<br></div></div><div>/etc/nginx/modules<br># nginx -v<br>nginx version: nginx/1.20.2<br># ls -l<br>total 88<br>-rwxr-xr-x 1 root root 88904 May  8 04:34 ngx_http_cache_purge_module.so<br>#<br></div><div><br></div><div>#nginx -t -c /etc/nginx/nginx.conf<br><font color="#ff0000">nginx: [emerg] unknown directive "proxy_cache_purge" in /etc/nginx/conf.d/default.conf:103<br>nginx: configuration file /etc/nginx/nginx.conf test failed<br></font></div><div><br></div><div>I have the nginx module /etc/nginx/modules/ngx_http_cache_purge_module.so and I am attaching the file for your reference.</div><div><br></div><div><div>Please correct and guide me if I am missing something. Thanks in advance. <br></div><div><br></div><div>Best Regards,</div><div><br></div><div>Kaushal</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 8, 2022 at 8:40 AM Kaushal Shriyan <<a href="mailto:kaushalshriyan@gmail.com" target="_blank">kaushalshriyan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Sergey,<div><br></div><div>I followed <a href="https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/#load_module" target="_blank">https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/#load_module</a> to generate the third party dynamic module</div><div><br></div><div>Nginx Version :- nginx version: nginx/1.20.1<br></div><div>OS Version :- CentOS Linux release 7.9.2009 (Core)<br></div><div><div><br></div><div>cd /home/kaushal/ngx-cache-purge/</div><div># ls -l<br>total 64<br>-rw-r--r-- 1 root root   728 May  8 02:48 config<br>-rw-r--r-- 1 root root 51501 May  8 02:48 ngx_cache_purge_module.c<br>-rw-r--r-- 1 root root  5090 May  8 02:48 README.md<br># cat config<br>if [ "$HTTP_PROXY" = "YES" ]; then<br>    have=NGX_HTTP_PROXY . auto/have<br>fi<br><br>if [ "$HTTP_FASTCGI" = "YES" ]; then<br>    have=NGX_HTTP_FASTCGI . auto/have<br>fi<br><br>if [ "$HTTP_SCGI" = "YES" ]; then<br>    have=NGX_HTTP_SCGI . auto/have<br>fi<br><br>if [ "$HTTP_UWSGI" = "YES" ]; then<br>    have=NGX_HTTP_UWSGI . auto/have<br>fi<br><br>if test -n "$ngx_module_link"; then<br>    ngx_module_type=HTTP<br>    ngx_module_name=ngx_http_cache_purge_module<br>    ngx_module_srcs="$ngx_addon_dir/ngx_cache_purge_module.c"<br><br>    have=NGX_CACHE_PURGE_MODULE . auto/have<br><br>    . auto/module<br>else<br>    HTTP_MODULES="$HTTP_MODULES ngx_http_cache_purge_module"<br>    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_cache_purge_module.c"<br><br>    have=NGX_CACHE_PURGE_MODULE . auto/have<br>fi<br>#<br></div><div><br></div><div>#wget <a href="http://nginx.org/download/nginx-1.20.2.tar.gz" target="_blank">http://nginx.org/download/nginx-1.20.2.tar.gz</a><br></div><div>#tar zxvf nginx-1.20.2.tar.gz<br></div><div>#cd /home/kaushal/nginx-1.20.2/</div><div>#./configure --with-compat --add-dynamic-module=../ngx-cache-purge<br></div><div><br></div><div>#cat /usr/share/nginx/modules/ngx-http-cache-purge-module.conf<br>load_module "/usr/lib64/nginx/modules/ngx_http_cache_purge_module.so";<br></div><div><br></div><div>#cat /etc/nginx/nginx.conf<br></div><div>user nginx;<br>worker_processes auto;<br>error_log /var/log/nginx/error.log;<br>pid /run/nginx.pid;<br><br># Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.<br>include /usr/share/nginx/modules/*.conf;<br></div><div><br></div><div>#nginx -t -c /etc/nginx/nginx.conf<br></div><div><font color="#ff0000">nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_cache_purge_module.so" version 1020002 instead of 1020001 in /usr/share/nginx/modules/ngx-http-cache-purge-module.conf:1<br></font>nginx: configuration file /etc/nginx/nginx.conf test failed<br></div><div><br></div><div><div>Please correct and guide me if I am missing something. Thanks in advance. <br></div><div><br></div><div>Best Regards,</div><div><br></div><div>Kaushal</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, May 7, 2022 at 7:32 PM Sergey A. Osokin <<a href="mailto:osa@freebsd.org.ru" target="_blank">osa@freebsd.org.ru</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Kaushal,<br>
<br>
On Sat, May 07, 2022 at 06:31:59PM +0530, Kaushal Shriyan wrote:<br>
> <br>
> #gcc -o ngx_cache_purge_module ngx_cache_purge_module.c<br>
> ngx_cache_purge_module.c:30:19: fatal error: nginx.h: No such file or<br>
> directory<br>
>  #include <nginx.h><br>
>                    ^<br>
> compilation terminated.<br>
<br>
I'd recommend to follow this [1] blog post to create a dynamic module<br>
for nginx.<br>
<br>
References:<br>
1. <a href="https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/" rel="noreferrer" target="_blank">https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/</a><br>
<br>
-- <br>
Sergey A. Osokin<br>
_______________________________________________<br>
nginx mailing list -- <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
To unsubscribe send an email to <a href="mailto:nginx-leave@nginx.org" target="_blank">nginx-leave@nginx.org</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>