PDA

View Full Version : nginx users with mod-rewrite urls: can you post your virtual host file?


sub_ubi
11-15-2016, 11:02 PM
I'm having a heck of a time getting mod-rewrite friendly URLs working in nginx. I followed this post,

http://www.vbulletin.com/forum/forum/vbulletin-4/vbulletin-4-questions-problems-and-troubleshooting/4031516-nginx-friendly-urls-rewrite-rules-was-working-before?p=4032700#post4032700

rewrite /threads/.* /showthread.php?$uri&$args last;
rewrite /forums/.* /forumdisplay.php?$uri&$args last;
rewrite /members/.* /member.php?$uri&$args last;
rewrite /blogs/.* /blog.php?$uri&$args last;
rewrite /entries/.* /entry.php?$uri&$args last;
rewrite ^/(?:(.*?)(?:/|$))(.*|$)$ /$1.php?r=$2 last;

but am not having much luck. 404's everywhere, or images don't work, or something wonky. My vhost file is becoming a mess. Can someone with mod-rewrite urls working post their full vhost so I can see where to put everything?

Thanks!

Dave
11-15-2016, 11:13 PM
Which ones are 404'ing?

sub_ubi
11-15-2016, 11:25 PM
Forums, threads, pretty much anything unless I specify the .php file.

server {
server_name www.mysite.com;
return 301 $scheme://mysite.com$request_uri;
}
server {
listen 80;
listen [::]:80;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/mysite;

# some unique logging
access_log /var/log/nginx/mysite_access.log;
error_log /var/log/nginx/mysite_error.log;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;

server_name mysite.com;

location / {
#for vbulletin
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;

#my attempt at mod-rewrite URLs, currently failing
rewrite /threads/.* /showthread.php?$uri&$args last;
rewrite /forums/.* /forumdisplay.php?$uri&$args last;
rewrite /members/.* /member.php?$uri&$args last;
rewrite /blogs/.* /blog.php?$uri&$args last;
rewrite /entries/.* /entry.php?$uri&$args last;
rewrite /(?:(.*?)(?:/|$))(.*|$)$ /$1.php?r=$2 last;
}

# for amember software
location /amember { try_files not-existing-file @php;}
location ~* ^/amember/.*\.(js|ico|gif|jpg|png|css|swf|csv)$ {}
location ~* ^/amember/setup/index.php$ { try_files not-existing-file @php; }
location ~* ^/amember/js.php { try_files not-exiting-file @php; }
location ~* ^/amember/index.php$ { try_files not-existing-file @php; }
location ~* ^/amember/public.php$ { try_files not-existing-file @php; }

location ~* ^/amember/public { rewrite ^.*$ /amember/public.php; }
location ~* ^/amember/setup { rewrite ^.*$ /amember/setup/index.php; }
location ~* ^/amember { rewrite ^.*$ /amember/index.php; }


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#with php5.6-fpm:
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffers 256 16k;
fastcgi_buffer_size 32k;
fastcgi_temp_file_write_size 256k;
}
# more amember stuff
location @php {
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
# fastcgi_pass php-handler;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffers 256 16k;
fastcgi_buffer_size 32k;
fastcgi_temp_file_write_size 256k;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

Dave
11-15-2016, 11:32 PM
Hmm what if you move those rewrite rules outside of the "location /" block?

sub_ubi
11-15-2016, 11:36 PM
Thank you so much for helping!

Hmm what if you move those rewrite rules outside of the "location /" block?

Just a 404 even when I specify forum.php