Ajax not working in LEMP

Posted May 28, 2020 854 views
NginxConfiguration ManagementLEMP

Hi. I made my site through LEMP.
(ubuntu 18.04 LTS, nginx 1.17.10, mariaDB 10.3, php 7.4)

I settled the Pagespeed, Brotli, Fastcgi Cache.
But I don’t know why Ajax don’t work.

configuration code is like below..


load_module modules/;
load_module modules/;
load_module modules/;

user  www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/;

events {
    worker_connections  1024;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    ## pagespeed ##
    pagespeed on;
    pagespeed ProcessScriptVariables on;
    pagespeed FetchWithGzip on;
    pagespeed RewriteLevel CoreFilters;
    pagespeed RespectVary off;
    pagespeed DisableRewriteOnNoTransform off;
    pagespeed SupportNoScriptEnabled false;
    pagespeed ModifyCachingHeaders on;
    pagespeed ListOutstandingUrlsOnError on;
    pagespeed MaxCacheableContentLength -1;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    pagespeed MessageBufferSize 100000;
    pagespeed XHeaderValue "Powered By Pagespeed";
    pagespeed FileCacheSizeKb 102400;
    pagespeed FileCacheCleanIntervalMs 3600000;
    pagespeed FileCacheInodeLimit 500000;
    pagespeed RewriteLevel PassThrough;
    pagespeed EnableFilters canonicalize_javascript_libraries,extend_cache,extend_cache_pdfs,combine_css,combine_javascript,move_css_above_scripts,insert_dns_prefetch,rewrite_javascript,rewrite_images,prioritize_critical_css,rewrite_css,rewrite_style_attributes,convert_meta_tags,lazyload_images,collapse_whitespace,move_css_to_head,remove_comments,remove_quotes,defer_javascript,inline_css,inline_javascript;
    pagespeed UseNativeFetcher on;
    pagespeed LRUCacheKbPerProcess     2048;
    pagespeed LRUCacheByteLimit        8192;
    pagespeed CreateSharedMemoryMetadataCache "/dev/shm/ngx_shared" 6400;
    pagespeed CssInlineMaxBytes 1024;
    pagespeed JsInlineMaxBytes 1024;
    pagespeed RedisServer "localhost:6379";
    pagespeed RedisTimeoutUs 1000;
    pagespeed UsePerVhostStatistics on;
    pagespeed Statistics on;
    pagespeed StatisticsLogging on;
    pagespeed StatisticsLoggingIntervalMs 60000;
    pagespeed StatisticsLoggingMaxFileSizeKb 1024;
    pagespeed MessageBufferSize 100000;
    pagespeed LogDir /var/log/pagespeed;
    pagespeed StatisticsPath /ngx_pagespeed_statistics;
    pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics;
    pagespeed MessagesPath /ngx_pagespeed_message;
    pagespeed ConsolePath /pagespeed_console;
    pagespeed AdminPath /pagespeed_admin;
    pagespeed GlobalAdminPath /pagespeed_global_admin;
    pagespeed EnableCachePurge on;
    pagespeed PurgeMethod PURGE;
    pagespeed DownstreamCacheRewrittenPercentageThreshold 95;

    ## Fastcgi Cache ##
    client_max_body_size 64m;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;

    ## gzip ##
    gzip on;
    gzip_http_version 1.1;
    gzip_disable "msie6";
    gzip_static on;
    gzip_vary on;
    gzip_min_length 0;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_types   text/plain text/css text/javascript text/xml
             application/javascript application/json application/x-javascript
             application/xml application/xml+rss
             image/svg+xml image/svg;

[default.conf] in “conf.d” directory

fastcgi_cache_path /var/run/nginx-fastcgi-cache levels=1:2 keys_zone=FASTCGICACHE:100m inactive=30s;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
    listen 80;

    location / {
      return 301$request_uri;

server {
    listen 443 ssl http2;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    include /etc/nginx/snippets/letsencrypt.conf;

    ssl_certificate /etc/letsencrypt/live/;
    ssl_certificate_key /etc/letsencrypt/live/;
    ssl_trusted_certificate /etc/letsencrypt/live/;
    include /etc/nginx/snippets/ssl.conf;

    set $skip_cache 0;
    # POST requests and urls with a query string should always go to PHP
    if ($request_method = POST) {
        set $skip_cache 1;
    if ($query_string != "") {
        set $skip_cache 1;
    # Don't cache uris containing the following segments
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
        set $skip_cache 1;
    # Don't use the cache for logged in users or recent commenters
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
        set $skip_cache 1;

    location / {
      try_files $uri $uri/ =404;
      if (!-e $request_filename) {
        rewrite ^.*$ /index.php last;

    location ~ \.php$ {
      #include fastcgi.conf;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      fastcgi_cache_bypass $skip_cache;
      fastcgi_no_cache $skip_cache;
      fastcgi_cache FASTCGICACHE;
      fastcgi_cache_valid 30s;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      add_header X-FastCGI-Cache $upstream_cache_status;

    location ~ /\.ht {
        deny all;

    ## Browser Cache ##
    location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
      access_log        off;
      log_not_found     off;
      expires           30s;

    ## Pagespeed ##
    location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {add_header "" ""; }
    location ~ "^/pagespeed_static/" { }
    location ~ "^/ngx_pagespeed_beacon$" { }
    pagespeed RespectVary on;
    pagespeed FileCacheSizeKb 102400;
    pagespeed FileCacheCleanIntervalMs 3600000;
    pagespeed FileCacheInodeLimit 500000;
    pagespeed LRUCacheKbPerProcess 8192;
    pagespeed LRUCacheByteLimit 16384;
    pagespeed RewriteLevel CoreFilters;
      pagespeed FetchHttps enable,allow_self_signed;
      pagespeed MaxCacheableContentLength -1;
      pagespeed EnableFilters add_instrumentation;
      pagespeed EnableFilters insert_dns_prefetch;
      pagespeed EnableFilters extend_cache;
      pagespeed EnableFilters extend_cache_pdfs;
      pagespeed EnableFilters local_storage_cache;
      pagespeed EnableFilters combine_heads;
      pagespeed EnableFilters collapse_whitespace;
      pagespeed EnableFilters convert_meta_tags;
      pagespeed EnableFilters elide_attributes;
      pagespeed EnableFilters pedantic;
      pagespeed EnableFilters remove_comments;
      pagespeed EnableFilters remove_quotes;
      pagespeed EnableFilters trim_urls;
      pagespeed EnableFilters combine_javascript;
      pagespeed EnableFilters canonicalize_javascript_libraries;
      pagespeed EnableFilters inline_javascript;
      pagespeed EnableFilters outline_css;
      pagespeed EnableFilters combine_css;
      pagespeed EnableFilters inline_import_to_link;
      pagespeed EnableFilters inline_css;
      pagespeed EnableFilters inline_google_font_css;
      pagespeed EnableFilters move_css_above_scripts;
      pagespeed EnableFilters move_css_to_head;
      pagespeed EnableFilters prioritize_critical_css;
      pagespeed EnableFilters rewrite_css;
      pagespeed EnableFilters fallback_rewrite_css_urls;
      pagespeed EnableFilters rewrite_style_attributes_with_url;
      pagespeed EnableFilters dedup_inlined_images;
      pagespeed EnableFilters inline_preview_images;
      pagespeed EnableFilters resize_mobile_images;
      pagespeed EnableFilters lazyload_images;
      pagespeed EnableFilters inline_images;
      pagespeed EnableFilters convert_gif_to_png;
      pagespeed EnableFilters convert_jpeg_to_progressive;
      pagespeed EnableFilters recompress_jpeg;
      pagespeed EnableFilters recompress_png;
      pagespeed EnableFilters recompress_webp;
      pagespeed EnableFilters strip_image_color_profile;
      pagespeed EnableFilters strip_image_meta_data;
      pagespeed EnableFilters jpeg_subsampling;
      pagespeed EnableFilters convert_png_to_jpeg;
      pagespeed EnableFilters resize_images;
      pagespeed EnableFilters resize_rendered_image_dimensions;
      pagespeed EnableFilters convert_jpeg_to_webp;
      pagespeed EnableFilters convert_to_webp_lossless;
      pagespeed EnableFilters insert_image_dimensions;
      pagespeed NoTransformOptimizedImages on;
      pagespeed EnableFilters sprite_images;

    ## Brotli ##
    # Dynamic mode.
    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/ image/bmp image/svg+xml;
    # Static mode.
    brotli_static on;

Please help me :)

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
1 answer

Hi there @joshuarang,

The Nginx configuration looks correct, what is the exact error that you get for your AJAX requests? Can you share the error from your web console here?

Also, I would recommend having a look at your Nginx error log for more information about the actual error:

  • sudo tail -100 /var/log/nginx/error.log

Another thing that you could take a look at is this answer here on how to troubleshoot common Nginx problems: