Wie würdet ihr eine Conf für Nginx schreiben?

Apache, Lighttpd, nginx, Cherokee
User avatar
Proteus
Posts: 283
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Wie würdet ihr eine Conf für Nginx schreiben?

Post by Proteus » 2013-06-17 22:08

Hallo,

ich habe kürzlich meinen Server auf Freebsd 9.1 umgestellt, und bin auch gleich auf den kleiner Webserver Nginx mit PHP-FPM umgesiedelt.

Meine Art der Konfiguration, bereitet mir aber ein paar Probleme, und ich bin mir eben nicht mehr sicher welche Konfiguration eigentlich nun die Beste für mein Vorhaben ist, und ich vor lauter Confs Snipes ein wenig den Überblick verloren habe, und am Liebsten alles in die Ecke schmeißen will, schreibe ich hier rein.

Zum Beispiel habe ich eine Haupdomain, und möchte zu dieser eine Subdomain schaffen, dies habe ich wie beschrieben so konfiguriert und meine Confs in die Ordner Unterordner vhost1 vhost2 und vhost3 abgelegt damit ich durch die anderen Domains verwirrt werde. Und es funktioniert ja auch.

Kopfzerbrechen bereitet mir das wenn ich eine Seite mit www. lade langsamer lädt als ohne.

Ich habe dieses Konfigurationsbeispiel http://bin63.com/how-to-install-nginx-and-php-fpm-on-freebsd genommen da mir dies am Einfachsten und logisch erschien.

Meine nginx.conf sieht folgendermaßen aus:

Code: Select all

pid               /var/run/nginx.pid;
user              www www; # you can also make a jailed user like _nginx if you want
error_log          /var/log/nginx/error.log crit;

worker_processes     4;
events {
   worker_connections 2048;
}

http {
      client_body_timeout      2s;
      client_header_timeout    2s;
      send_timeout             2s;
      keepalive_timeout             65;
      spdy_keepalive_timeout 180s;
      spdy_recv_timeout        2s;
      default_type             application/octet-stream;
      gzip                     on;
      gzip_http_version        1.0;
      gzip_static              on;
      gzip_vary                on;
      gzip_proxied             any;
      gzip_disable "MSIE [1-6]\.";
      gzip_comp_level 5;
      gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
      limit_req_zone $binary_remote_addr zone=flood:10m rate=10r/s;
      ignore_invalid_headers   on;
      include                  /usr/local/etc/nginx/mime.types;
      output_buffers         1 512K;
      postpone_output           0;
      recursive_error_pages     on;
      reset_timedout_connection on;
      sendfile                  off;
      server_tokens             off;
      server_name_in_redirect   off;
      spdy_headers_comp           5;
      spdy_max_concurrent_streams 20;
      tcp_nodelay                on;
      tcp_nopush                off;
      proxy_temp_path /usr/local/etc/nginx/proxy;
      proxy_cache_path /usr/local/etc/nginx/cache levels=1:2 keys_zone=staticfilecache:50m  max_size=300m;
      proxy_cache_key "$scheme://$host$request_uri";
      include /usr/local/etc/nginx/vhost1/*.conf;
      include /usr/local/etc/nginx/vhost2/*.conf;
      include /usr/local/etc/nginx/vhost3/*.conf;
}


Die Hauptdomain sieht so aus:

Code: Select all

server {
   listen localhost:80;
   server_name www.domain.com domain.com;
}
server {
   listen 80;
   server_name www.domain.com domain.com;
   root /var/www/vhost3/domain.com;

   proxy_cache_valid 200 302 1h;
   proxy_cache_valid 301 24h;
   proxy_cache_valid any 10m;

location ~* \.(jpeg|jpg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|avi|mp3|mov|docx|pptx|xlsx|cfg|odt)$ {
      expires 864000;
}
location / {
   index index.php index.html index.htm;
   if (!-e $request_filename) {
#Woltlab rewrite rules
      rewrite ^/tag/([0-9]+)-([^/.]*)/?$ /index.php?page=TaggedObjects&tagID=$1 last;
      rewrite ^/user/([0-9]+)-([^/.]*)/?$ /index.php?page=User&userID=$1&username=$2 last;
      rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)-([^/.]*)/last-post.html$ /index.php?page=Thread&threadID=$3&action=lastPost last;
      rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)-([^/.]*)/first-new-post.html$ /index.php?page=Thread&threadID=$3&action=firstNew last;
      rewrite ^/([^/]+/)*([^/.]+)/p([0-9]+)-([^/.]*)/?$ /index.php?page=Thread&postID=$3 last;
      rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)-([^/.]*)/index([0-9]+).html$ /index.php?page=Thread&threadID=$3&pageNo=$5 last;
      rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)-([^/.]*)/?$ /index.php?page=Thread&threadID=$3 last;
      rewrite ^/([^/]+/)*board([0-9]+)-([^/.]+)/index([0-9]+).html$ /index.php?page=Board&boardID=$2&pageNo=$4 last;
      rewrite ^/([^/]+/)*board([0-9]+)-([^/.]+)/?$ /index.php?page=Board&boardID=$2 last;
      rewrite ^/index.html$ /index.php?page=Index last;
      rewrite ^/user/?$ /index.php?page=MembersList last;
      rewrite ^/user/search.html$ /index.php?form=MembersSearch last;
      rewrite ^/user/team.html$ /index.php?page=Team last;
      rewrite ^/help/([a-z.]+).html$ /index.php?page=Help&item=$1 last;
      rewrite ^/help/?$ /index.php?page=Help last;
      rewrite ^/user/online.html$ /index.php?page=UsersOnline last;
      rewrite ^/user/([0-9]+)-([^/.]*)/mail.html$ /index.php?form=Mail&userID=$1 last;
      rewrite ^/user/([0-9]+)-([^/.]*)/pm.html$ /index.php?form=PMNew&userID=$1 last;
      rewrite ^/user/([0-9]+)-([^/.]*)/v-card.vcf$ /index.php?page=VCard&userID=$1 last;
      rewrite ^/mark-all-as-read.html$ /index.php?action=BoardMarkAllAsRead last;
      rewrite ^/(board[0-9]+-[^/.]+/)*board([0-9]+)-([^/.]+)/mark-as-read.html$ /index.php?action=BoardMarkAsRead&boardID=$2 last;
      rewrite ^/(board[0-9]+-[^/.]+/)*board([0-9]+)-([^/.]+)/thread-add.html$ /index.php?form=ThreadAdd&boardID=$2 last;
      rewrite ^/(board[0-9]+-[^/.]+/)*board([0-9]+)-([^/.]+)/([0-9]+)-([^/.]*)/post-add.html$ /index.php?form=PostAdd&threadID=$4 last;
      rewrite ^/login.html$ /index.php?form=UserLogin last;
      rewrite ^/register.html$ /index.php?page=Register last;
      rewrite ^/lost-password.html$ /index.php?form=LostPassword last;
      rewrite ^/search.html$ /index.php?form=Search last;
      rewrite ^/legal-notice.html$ /index.php?page=LegalNotice last;
      rewrite ^/rules.html$ /index.php?page=Rules last;
      rewrite ^/contact.html$ /index.php?form=Contact last;
   }
}
location ~ \.php$ {
   fastcgi_pass unix:/var/run/php-fpm.sock;
   limit_req zone=flood burst=15 nodelay;
   proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
   proxy_cache staticfilecache;
  fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
   fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
   # fastcgi_split_path_info ^(.+\.php)(.*)$;
   fastcgi_index  index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
   fastcgi_intercept_errors       on;
   fastcgi_ignore_client_abort    off;
   fastcgi_connect_timeout 60;
   fastcgi_send_timeout 180;
   fastcgi_read_timeout 180;
   fastcgi_buffer_size 128k;
   fastcgi_buffers 4 256k;
   fastcgi_busy_buffers_size 256k;
   fastcgi_temp_file_write_size 256k;
}
location ~ /\.ht {
   deny all;
   }
}


Die dazugehörige SubDomain Conf sieht so aus:

Code: Select all

server {
   listen localhost:80;
   server_name api.domain.com;
}
server {
   listen 80;
   server_name api.domain.com;
   root /var/www/vhost3/api.domain.com;

   proxy_cache_valid 200 302 1h;
   proxy_cache_valid 301 24h;
  proxy_cache_valid any 10m;

location ~* \.(jpeg|jpg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|avi|mp3|mov|docx|pptx|xlsx|cfg|odt)$ {
   expires 864000;
}
location / {
   index index.php index.html index.htm;
   try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
   fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
   fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
   limit_req zone=flood burst=15 nodelay;
   fastcgi_pass unix:/var/run/php-fpm.sock;
   proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
   proxy_cache staticfilecache;
   fastcgi_split_path_info ^(.+\.php)(.*)$;
   fastcgi_index  index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
   fastcgi_intercept_errors        on;
   fastcgi_ignore_client_abort     off;
   fastcgi_connect_timeout 60;
   fastcgi_send_timeout 180;
   fastcgi_read_timeout 180;
   fastcgi_buffer_size 128k;
   fastcgi_buffers 4 256k;
   fastcgi_busy_buffers_size 256k;
   fastcgi_temp_file_write_size 256k;
}
location ~ /\.ht {
      deny all;
   }
}


Ich weiß eben nicht ob das Prinzip dem ich nachgehe das Richtige ist, oder ob es einen einfacheren Weg gibt.
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie würdet ihr eine Conf für Nginx schreiben?

Post by Joe User » 2013-06-21 13:24

Ich kenne mich mit nginx leider nicht aus, aber mir fällt da trotzdem ein Fehler auf:
SPDY ist derzeit ausschliesslich für SSL/TLS (HTTPS) nutzbar. Das heisst alle spdy_* Zeilen müssen aus Deiner nginx.conf im Abschnitt http verschwinden.

Mehr fällt mir da spontan nicht auf.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
Proteus
Posts: 283
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: Wie würdet ihr eine Conf für Nginx schreiben?

Post by Proteus » 2013-06-21 14:53

Joe User wrote:Ich kenne mich mit nginx leider nicht aus, aber mir fällt da trotzdem ein Fehler auf:
SPDY ist derzeit ausschliesslich für SSL/TLS (HTTPS) nutzbar. Das heisst alle spdy_* Zeilen müssen aus Deiner nginx.conf im Abschnitt http verschwinden.

Mehr fällt mir da spontan nicht auf.


Stimmt ja ich hab es entfernt.. und schon funktioniert es besser. Wir haben Probleme mit dem Wbb Forum, aber jetzt scheint es zu funktionieren, man konnte keine Einstellungen aus der Administrative zu submiten.
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"