Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nginx webserver documentation #343

Open
cl-parsons opened this issue Jan 11, 2020 · 8 comments
Open

Nginx webserver documentation #343

cl-parsons opened this issue Jan 11, 2020 · 8 comments
Labels
documentation hx hoster experience

Comments

@cl-parsons
Copy link

Hi, I tried to setup my own server with Nginx, and it was not so easy to make it work by using the configuration provided by Slim framework. Here is a setup that works, for further documentation of croodle.
poll.conf.txt

@jelhan
Copy link
Owner

jelhan commented Jan 11, 2020

Hello @cl-parsons,

thanks for sharing your configuration.

I would recommend to Content-Security-Policy and Referrer-Policy headers. You could find the recommended ones in .htaccess file, which is part of the build.

If you feel confident with your httpS setup, you should also use Strict-Transport-Security header to enforce an encrypted connection on revisits. You may also use HTTP Public Key Pinning even so the effect is very limited since Chrome removed support.

If you have the time, apull request adding an example configuration for nginx and link it from README would be awesome.

Best
Jeldrik

@cl-parsons
Copy link
Author

cl-parsons commented Jan 11, 2020

Thanks for the tips, I posted this really for a "basic setup" without having to sort what is useless and what is not.

@fooness
Copy link

fooness commented Nov 30, 2020

Is there any officially tested config ready to be added to the repo, meanwhile, with only what’s really necessary?

The following configuration (sites file) works for us on Ubuntu 20.04 LTS, but maybe there’s room for improvement. Would be great if someone with experience in croodle and fastcgi/fmp could have a look …

server {
  listen 80;
  server_name {{ ansible_fqdn }};
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name {{ ansible_fqdn }};

  # managed by certbot via /etc/nginx/conf.d/letsencrypt.conf
  #ssl_certificate /etc/letsencrypt/live/{{ ansible_fqdn }}/fullchain.pem;
  #ssl_certificate_key /etc/letsencrypt/live/{{ ansible_fqdn }}/privkey.pem;

  root /var/www/html;
  index index.html;

  location ~ ^/api/(index\.php)(.*)$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
  }
}

PS: It did NOT work with fastcgi_pass 127.0.0.1:9000;

@fooness
Copy link

fooness commented Dec 1, 2020

Sounds strange, but it stopped working for us after the first run of php /var/www/html/api/cron.php

Now we’re back at “The poll could not be saved. Please try again in a few seconds.”

2020/12/01 12:35:49 [error] 16356#16356: *3 open() "/var/www/html/api/index.php/polls" failed (20: Not a directory), client: […], server: […], request: "POST /api/index.php/polls HTTP/1.1", host: […]

That’s weird, isn’t it?

@jelhan
Copy link
Owner

jelhan commented Dec 1, 2020

Sounds strange, but it stopped working for us after the first run of php /var/www/html/api/cron.php

Now we’re back at “The poll could not be saved. Please try again in a few seconds.”

2020/12/01 12:35:49 [error] 16356#16356: *3 open() "/var/www/html/api/index.php/polls" failed (20: Not a directory), client: […], server: […], request: "POST /api/index.php/polls HTTP/1.1", host: […]

That’s weird, isn’t it?

Please double check the permissions of polls folder. Maybe the cron job was running with another user and some permissions got changed? Or to have the cronjob running the permissions were changed but didn't recall anymore?

@fooness
Copy link

fooness commented Dec 1, 2020

Thank you for your answer.

Please double check the permissions of polls folder. Maybe the cron job was running with another user and some permissions got changed? Or to have the cronjob running the permissions were changed but didn't recall anymore?

There is no polls folder.

It seems that changing the ownership of data folder helps and, maybe, fixes everything. Does this look right to you?

$ ls -alF
total 48
drwxr-xr-x 7 root     root     4096 Dec  1 13:07 ./
drwxr-xr-x 3 root     root     4096 Nov 30 17:31 ../
drwxr-xr-x 5 root     root     4096 Jan 31  2020 api/
drwxr-xr-x 2 root     root     4096 Jan 31  2020 assets/
drwxr-xr-x 4 www-data www-data 4096 Dec  1 13:07 data/
drwxr-xr-x 2 root     root     4096 Jan 29  2020 ember-fetch/
-rw-r--r-- 1 root     root     5430 Nov 30 17:31 favicon.ico
-rw-r--r-- 1 root     root     3292 Jan 31  2020 index.html
drwxr-xr-x 3 root     root     4096 Jan  5  2020 open-iconic/
-rw-r--r-- 1 root     root       51 Oct 28  2019 robots.txt

$ ls -alF data/
total 16
drwxr-xr-x 4 www-data www-data 4096 Dec  1 13:07 ./
drwxr-xr-x 7 root     root     4096 Dec  1 13:07 ../
drwxr-xr-x 2 www-data www-data 4096 Dec  1 12:52 6dMPwH68aQ/
drwxr-xr-x 3 www-data www-data 4096 Dec  1 12:53 i7wXpRPVEN/
-rw-r--r-- 1 root     root        0 Jan 31  2020 index.html

@jelhan
Copy link
Owner

jelhan commented Dec 1, 2020

Oh sorry. Shouldn't have replied within a hurry and got confused about the cronjob.

It seems as if nginx is not handing a request to api/index.php/polls to api/index.php PHP script. Please have a look at #92.

@fooness
Copy link

fooness commented Dec 1, 2020

I did. It seems the default nginx fastcgi configuration which comes via include snippets/fastcgi-php.conf; should work. I checked all the default fastcgi params and variables and, to me, everything looks as it should work (at least if the location ~ ^/api/(index\.php)(.*)$ { is addressed correctly.

If you can reproduce a correct and working installation with the nginx sites config pasted above, please feel free to add it to your README.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation hx hoster experience
Projects
None yet
Development

No branches or pull requests

3 participants