Nginx subdirectory 404 - nginx

Hey i want install a forum (xenforo) , i already got all the .php files , i put the folder on /usr/share/nginx/html where is the page (main page index.html) , but when i do 127.0.0.1/forum/ i get that error
403 Forbidden
nginx/1.10.3
so I want to know how can I fix it, the configuration is that one
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
getenforce is disabled

When you setup Xenforo 2 on nginx you need to read the documentation here.
It tells you how to setup the nginx config like this:
location /xf/ {
try_files $uri $uri/ /xf/index.php?$uri&$args;
index index.php index.html;
}
location /xf/install/data/ {
internal;
}
location /xf/install/templates/ {
internal;
}
location /xf/internal_data/ {
internal;
}
location /xf/library/ { #legacy
internal;
}
location /xf/src/ {
internal;
}
location ~ \.php$ {
try_files $uri /index.php?$uri&$args;
#try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
This should fix your issues. That is what I'm using on centminmod and it works great. If your forum is located in the root directory remove the "/xf" from each path or if you're in a different folder, change it.

Related

Wordpress Nginx 404

I have a Wordpress instance running fine, and i have a directory on my server that needs to redirect users to another domain outside the main server using a 302 rule. I add this on my server block and the redirection works fine:
server {
listen 80;
server_name domain.com;
location /lps {
return 302 https://newdomain/$request_uri;
}
}
but when i go to domain.com i got a 404 Not Found error.
I also try without luck.
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
I manage to solve my issue with this:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Main Server Config
server {
listen 80;
server_name localhost;
root /home/site/wwwroot;
index index.html index.htm index.php;
error_page 500 502 503 504 /50x.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /lps {
return 302 https://newdomain.net/$request_uri;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
My Azure container have FastCGI and had to add the php instruction

NextCloud with nginx: subdomain config for NextCloud serves document root instead of folder

I'm trying to set up nextcloud on nextcloud.mydomain.com while I have my regular website on mydomain.com. Here's my default.conf for nginx:
server {
listen 80;
listen [::]:80;
server_name IP_HERE;
root /var/www/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
location ~ /\.ht {
deny all;
}
}
The nextcloud.conf file follows Step 4 of this tutorial: https://www.linuxbabe.com/ubuntu/install-nextcloud-11-ubuntu-16-04-nginx-config
I don't know why, but when I access nextcloud.mydomain.com I just get the index.html in my /html webroot instead of the nextcloud setup wizard in the /nextcloud folder.
Any ideas? Thank you very much in advance!

nginx browser caching directive brings 404 not found

One of the sites I want to implement browser caching for images
has this particular server {} block on virtual.conf
server {
listen 80;
server_name www.example.net example.net;
location / {
root /var/www/example.net/public_html;
index index.html index.htm index.php;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/example.net/public_html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/example.net/public_html;
}
location ~* \.(jpg|jpeg|png|gif)$ {
expires 180d;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /var/www/example.net/public_html;
error_log /var/www/example.net/public_html/error.log error;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Normally this directive
location ~* \.(jpg|jpeg|png|gif)$ {
expires 180d;
}
Should take care of caching images on the user end. But instead when I access
an image on my website I get 404 not found. I am not sure why this I caused.
Yes. I reloaded/restarted nginx after adding the directive.
The image resides in a subfolder like:
example.net/images/dir1/user_photos/photo.jpg
or
example.net/images/dir1/user_photos/photo.jpg
Any help would be appreciated.
Thank you.
Root parameter should be outside the location directive.
It is not the best practice to have root inside location
Change
location / {
root /var/www/html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
To:
root /var/www/html;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}

Nginx and Jekyll: serving in a subdomain

I'm currently stuck in configuring Jekyll and nginx to work together on a VPS.
Essentially, I set up everything and a git hook from my local machine to the VPS.
Here is my nginx config file:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www;
index index.php index.html index.htm;
server_name server_ip;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name server_ip/blog;
location / {
root /var/www/blog;
index index.html index.htm;
}
}
Ideally, what I'd like is to serve what is in /var/www/blog at blog.domain.example, or blog.server_ip at the moment.
However, when jekyll build runs, the URLs are all wrong. I can see index.html at server_ip/blog, but the /blog/ bit in the URL is not replicated in the links on the Jekyll page.
For example, a post should live at server_ip/blog/2015/04/07/title, but the URL I'm given is server_ip/2015/04/07/title. Same goes for the CSS files, and images as well.
Thanks very much for your help.
You have to set baseurl: "/blog"
And link to posts like this <a href="{{site.baseurl}}{{post.url}}>....
And generaly use {{site.baseurl}} to built any url.

NGINX url rewrite on digitalocean

I have problem with url rewrite from example.com to www.example.com on nginx web server. I using new hosting digitalocean.com and still struggling with this...
I will be happy with every opinion.
There is my code:
server {
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
server_name www.example.com;
root /usr/share/nginx/www;
index index.php index.html index.htm;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
I have error when I trying to restart nginx server:
Restarting nginx: nginx: [emerg] could not build the server_names_hash, you should
increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed
The server name is probably too long for the default values.
Modify the /etc/nginx/nginx.conf file by adding the following below the http:
increase server_names_hash_bucket_size: 64
Save this value and test using the -t
nginx -t
Also, watch for any saved default configurations in the sites-available folder which may cause issues.
Try the following:
server {
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
server_name www.example.com;
root /usr/share/nginx/www;
index index.php index.html index.htm;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Resources