T
T
Timur Yakhin2019-08-21 00:06:16
Nginx
Timur Yakhin, 2019-08-21 00:06:16

How to force nginx to pass OPTIONS request to PHP?

For some reason, nginx responds to OPTIONS requests with a 405 code and the standard nginx error page. How to make nginx pass request to php?
nginx.conf

user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    include /etc/nginx/modules-enabled/*.conf;

    events {
            worker_connections 768;
            # multi_accept on;
    }

    http {

            ##
            # Basic Settings
            ##

            charset utf8;
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            server_tokens off;

            # server_names_hash_bucket_size 64;
            # server_name_in_redirect off;

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

            ##
            # SSL Settings
            ##

            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
            ssl_prefer_server_ciphers on;

            ##
            # Logging Settings
            ##

            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;

            ##
            # Gzip Settings
            ##

            gzip on;
            gzip_disable "msie6";

            # gzip_vary on;
            # gzip_proxied any;
            gzip_comp_level 6;
            gzip_min_length 1000;
            # gzip_buffers 16 8k;
            # gzip_http_version 1.1;
            gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

            ##
            # Virtual Host Configs
            ##

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

    #mail {
    #       # See sample authentication script at:
    #       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
    #
    #       # auth_http localhost/auth.php;
    #       # pop3_capabilities "TOP" "USER";
    #       # imap_capabilities "IMAP4rev1" "UIDPLUS";
    #
    #       server {
    #               listen     localhost:110;
    #               protocol   pop3;
    #               proxy      on;
    #       }
    #
    #       server {
    #               listen     localhost:143;
    #               protocol   imap;
    #               proxy      on;
    #       }
    #}

sites-available/example.com
server {
        listen 80;
        listen [::]:80;
        server_name example.com;

        rewrite ^ https://$host$request_uri? permanent;
    }

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;

        ssl on;
        ssl_certificate /home/temoffey/.acme.sh/example.com/fullchain.cer;
        ssl_certificate_key /home/temoffey/.acme.sh/example.com/example.com.key;

        include snippets/ssl-headers.conf;
        include snippets/csp-headers-frame.conf;

        index index.html index.php;
        root /srv/nginx/example.com;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
            fastcgi_read_timeout 300;
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        }
    }

index.php
<?php
    
    	var_dump($_SERVER);
    
    ?>

Answer the question

In order to leave comments, you need to log in

1 answer(s)
T
Timur Yakhin, 2019-08-25
@temoffey

As a result, I abandoned nginx + php towards node.js

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question