From 540779286a899dee846784a8ffd0fdab756ac1e3 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sun, 15 Dec 2013 22:54:56 +0100 Subject: Common web configuration. --- roles/common-web/files/etc/nginx/fastcgi/params | 22 +++++++++ roles/common-web/files/etc/nginx/fastcgi/php | 10 ++++ roles/common-web/files/etc/nginx/fastcgi/php-ssl | 8 ++++ roles/common-web/files/etc/nginx/ssl/config | 19 ++++++++ roles/common-web/handlers/main.yml | 3 ++ roles/common-web/tasks/main.yml | 60 ++++++++++++++++++++++++ 6 files changed, 122 insertions(+) create mode 100644 roles/common-web/files/etc/nginx/fastcgi/params create mode 100644 roles/common-web/files/etc/nginx/fastcgi/php create mode 100644 roles/common-web/files/etc/nginx/fastcgi/php-ssl create mode 100644 roles/common-web/files/etc/nginx/ssl/config create mode 100644 roles/common-web/handlers/main.yml create mode 100644 roles/common-web/tasks/main.yml (limited to 'roles/common-web') diff --git a/roles/common-web/files/etc/nginx/fastcgi/params b/roles/common-web/files/etc/nginx/fastcgi/params new file mode 100644 index 0000000..ba7b265 --- /dev/null +++ b/roles/common-web/files/etc/nginx/fastcgi/params @@ -0,0 +1,22 @@ +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_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +fastcgi_param HTTPS $https; diff --git a/roles/common-web/files/etc/nginx/fastcgi/php b/roles/common-web/files/etc/nginx/fastcgi/php new file mode 100644 index 0000000..1ba3937 --- /dev/null +++ b/roles/common-web/files/etc/nginx/fastcgi/php @@ -0,0 +1,10 @@ +# cf. http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP +try_files $uri $uri/ =404; + +include fastcgi/params; +# required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; + +fastcgi_intercept_errors on; +fastcgi_read_timeout 14400; +fastcgi_pass unix:/var/run/php5-fpm.sock; diff --git a/roles/common-web/files/etc/nginx/fastcgi/php-ssl b/roles/common-web/files/etc/nginx/fastcgi/php-ssl new file mode 100644 index 0000000..b2a419c --- /dev/null +++ b/roles/common-web/files/etc/nginx/fastcgi/php-ssl @@ -0,0 +1,8 @@ +# PHP only. +# Credits to http://claylo.com/post/7617674014/ssl-php-fpm-and-nginx + +fastcgi_param HTTPS on; +fastcgi_param SSL_PROTOCOL $ssl_protocol; +fastcgi_param SSL_CIPHER $ssl_cipher; +fastcgi_param SSL_SESSION_ID $ssl_session_id; +fastcgi_param SSL_CLIENT_VERIFY $ssl_client_verify; diff --git a/roles/common-web/files/etc/nginx/ssl/config b/roles/common-web/files/etc/nginx/ssl/config new file mode 100644 index 0000000..863961b --- /dev/null +++ b/roles/common-web/files/etc/nginx/ssl/config @@ -0,0 +1,19 @@ +ssl on; + +# See http://nginx.org/en/docs/http/configuring_https_servers.html#optimization +keepalive_timeout 75 75; +ssl_session_timeout 5m; +ssl_session_cache shared:SSL:5m; + +# XXX: Ideally we want to get rid of TLSv1, to be immune to the BEAST +# attack. Sadly as of 2013 many clients don't support TLSv1.2, though. +# The alternative would be to reject BEAST-vulnerable ciphers from TLSv1 +# in favor of RC4, but that's not satisfactory either since RC4 has +# other weaknesses. +ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; +ssl_ciphers HIGH:!SSLv2:!aNULL:!eNULL:!3DES:!MD5:@STRENGTH; +ssl_prefer_server_ciphers on; + +# Strict Transport Security header for enhanced security. See +# http://www.chromium.org/sts. +add_header Strict-Transport-Security "max-age=12960000"; diff --git a/roles/common-web/handlers/main.yml b/roles/common-web/handlers/main.yml new file mode 100644 index 0000000..159596e --- /dev/null +++ b/roles/common-web/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart Nginx + service: name=nginx state=restarted diff --git a/roles/common-web/tasks/main.yml b/roles/common-web/tasks/main.yml new file mode 100644 index 0000000..ac42af3 --- /dev/null +++ b/roles/common-web/tasks/main.yml @@ -0,0 +1,60 @@ +- name: Install Nginx + apt: pkg=nginx + +- name: Limit Nginx logging + lineinfile: "dest=/etc/logrotate.d/nginx create=yes + regexp='^\\s*rotate\\s' + line='\trotate 3'" + tags: + - logrotate + +- name: Delete /etc/nginx/*_params + file: path=/etc/nginx/{{ item }}_params state=absent + with_items: + - fastcgi + - proxy + - scgi + - uwsgi + +- name: Delete /etc/nginx/sites-{available,enabled}/default + file: path=/etc/nginx/sites-{{ item }}/default state=absent + with_items: + - enabled + - available + +- name: Create directory /etc/nginx/{fastcgi,ssl} + file: path=/etc/nginx/{{ item }} + state=directory + owner=root group=root + mode=0755 + with_items: + - fastcgi + - ssl + +- name: Copy fastcgi parameters + copy: src=etc/nginx/fastcgi/{{ item }} + dest=/etc/nginx/fastcgi/{{ item }} + owner=root group=root + mode=0644 + register: r1 + with_items: + - params + - php + - php-ssl + notify: + - Restart Nginx + +- name: Copy SSL configuration + copy: src=etc/nginx/ssl/config + dest=/etc/nginx/ssl/config + owner=root group=root + mode=0644 + register: r2 + notify: + - Restart Nginx + +- name: Start Nginx + service: name=nginx state=started + when: not (r1.changed or r2.changed) + +- meta: flush_handlers -- cgit v1.2.3