Пример файла HOSTS /etc/hosts
192.168.100.1 odin.example.com
192.168.100.80 fenris.asgard.com fenris
192.168.100.10 loki.asgard.com loki
--------------------------------------------------------------------
Apache Конфиг
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
Nginx Конфиг
С:\nginx-1.2.6\conf\nginx.conf
--------------------------------------------------------------------
Apache Запись правил
<Directory /home>
...
</Directory>
Nginx Запись правил
http {
...
}
--------------------------------------------------------------------
Apache Пользователь сервера и его группа
User apache
Group 506
Nginx Пользователь сервера и его группа
user dima rabota; # имя пользователя и его группа
--------------------------------------------------------------------
Apache Ограничение зоны действия директив для файлов внутри папки и ее внутренних подпапок
<Directory /home/site2>
...
</Directorr>
<Directory "/home/site[1-3]">
...
</Directory>
Nginx Ограничение зоны действия для файлов внутри папки и ее внутренних подпапок
--------------------------------------------------------------------
Apache Ограничение зоны действия директив по URL
<Location /stuff>
order deny, allow
deny from all
allow from 127.0.0.1
</Location>
<LocationMatch "/status[1-3]">
order deny, allow
deny from all
allow from 127.0.0.1
</Location>
Nginx Ограничение зоны действия директив по URL
location /admin/ {
index.php;
access_log off;
access_log log/main.log;
log_format main '$pid - $nginx_version - $remote_addr';
log_not_found on;
}
--------------------------------------------------------------------
Apache Ограничение зоны действия применительно к отдельному файлу или к нескольким файлам
<Files .htaccess>
Order deny, allow
Deny from all
</Files>
<FilesMatch "/pic[1-3].jpg">
Order deny, allow
Deny from all
</FilesMatch>
Nginx Ограничение зоны действия применительно к отдельному файлу или к нескольким файлам
--------------------------------------------------------------------
Apache Используемые директивы внутри скобок <Directory >, <Location >, <Files >
AllowOverride All - разрешить перезаписать сходные директивы в файле .htaccess
AllowOverride None - запретить перезаписать сходные директивы в файле .htaccess
order allow, deny - задать порядок следования ниже лежащих директив (разрешить, затем запретить)
order deny, allow - задать порядок следования ниже лежащих директив (запретить, затем разрешить)
allow - задать IP-адрес или доменное имя, которому будет разрешен запрос к серверу.
deny - задать IP-адрес или доменное имя, которому будет запрещен запрос к серверу.
allow from all - разрешить всем IP-адресам или доменным именам отправлять запрос к серверу.
deny from all - запретить всем IP-адресам или доменным именам отправлять запрос к серверу.
Nginx Используемые директивы внутри скобок location
--------------------------------------------------------------------
Apache Папка, в которой по умолчанию будут располагаться все HTML-файлы
DocumentRoot /opt/apache/htdocs
Nginx Папка, в которой по умолчанию будут располагаться все HTML-файлы
location / {
root html;
}
--------------------------------------------------------------------
Apache Дефолтные имена файлов, которые будут являться главными HTML-файлами
DirectoryIndex index.html index.htm index.cgi index.shtml
Nginx Дефолтные имена файлов, которые будут являться главными HTML-файлами
location / {
index index.html index.htm;
}
--------------------------------------------------------------------
Apache MimeType по умолчанию, если MimeType сервер не смог определить
DefaultType text/plain
Nginx MimeType по умолчанию, если MimeType сервер не смог определить
default_type application/octet-stream;
--------------------------------------------------------------------
Apache Alias - Cвязывание соотвествия URL-адреса месту расположения файлов в папке на жестком диске сервера
Alias /адрес/ /папка/на/жестком/диске/с/картинками/например/
Nginx Alias - Cвязывание соотвествия URL-адреса месту расположения файлов в папке на жестком диске сервера
location /admin/ {
alias /var/www/locked/;
}
--------------------------------------------------------------------
Apache Добавить ассоциацию с Mimetype
AddType application/x-httpd-php .php
Nginx Добавить ассоциацию с Mimetype
types {
mimetype1 extension1;
mimetype2 extension2 [extension3…];
[…]
}
location /downloads/ {
types {
mimetype1 extension1;
}
}
--------------------------------------------------------------------
Apache Определение браузера по user-agent
BrowseMatch Mozilla/2 nokeepalive
Nginx Определение браузера по user-agent
$http_user_agent
--------------------------------------------------------------------
Apache Корневой каталог сервера
ServerRoot /opt/apache
Nginx Корневой каталог сервера
root /home/website.com/public_html;
--------------------------------------------------------------------
Apache Задание папки для записи файла логов об ошибках
ErrorLog logs/error_log
Nginx Задание папки для записи файла логов об ошибках
error_log logs/error.log;
--------------------------------------------------------------------
Apache Ограничение времени существования неактивных соединений
Timeout 150 (секунд)
Nginx Ограничение времени существования неактивных соединений
client_body_timeout 3m;
client_body_timeout 180s;
--------------------------------------------------------------------
Apache Разрешить поддержание устойчивых соединений
KeepAlive On
KeepAliveTimeout 15
Nginx Разрешить поддержание устойчивых соединений
http {
keepalive_timeout 65;
}
--------------------------------------------------------------------
Apache Задание прослушивания IP-адреса и порта
Listen 80
Listen 192.168.1.2:80
Nginx Задание прослушивания IP-адреса и порта
server {
listen 80;
}
--------------------------------------------------------------------
Apache Виртуальный хостинг
<VirtualHost 192.168.1.1>
ServerName www.example.org
DocumentRoot /some/other/directory
</VirtualHost>
<VirtualHost www.idiots.org>
DocumentRoot /some/other/directory
</VirtualHost>
Что можно добавить внутрь скобок <VirtualHost >
ServerName www.site2.com - доменное имя сайта
DocumentRoot /home/site2 - адрес папки с файлами для сайта
ServerAdmin admin@site2.com - почтовый адрес администратора сайта
ErrorLog /home/logs - адрсе папки для записи логов сервера для сайта
transferLog /home/trans - адрес папки для записи логов передачи данных от сервера для сайта
Директивы, которые нельзя прописывать внутри скобок виртуального хостинга
BindAddress
Listen
MaxSpareServers
MinSpareServers
MaxRequestPerChild
PidFile
ServerRoot
ServerType
TypeConfig
NameVirtualHost
Отстальное можно.
Nginx Виртуальный хостинг
http {
server {
listen 80;
server_name www.example1.com;
location / {
root /var/www/testapp;
index index.php index.html index.htm;
}
}
}
--------------------------------------------------------------------
Apache Proxy Прокси
Listen 8888
<VirtualHost 192.168.100.1:8888>
ServerName proxy.asgard.com
ProxyRequests On
</VirtualHost>
<Directory proxy:*>
order deny, allow
deny from список IP-адресов
allow from список IP-адресов
</Directory>
ProxyPass /distant/mirror http://www.tuchman.edu
Nginx Proxy Прокси
server {
listen 80;
server_name example1.com;
access_log /var/www/example1.com/log/nginx.access.log;
error_log /var/www/example1.com/log/nginx_error.log debug;
location / {
include proxy.conf;
proxy_pass http://127.0.0.1:8080;
}
}
--------------------------------------------------------------------
Apache Отказ в подступе при попытке загрузки файлов
<Directory />
Order deny, allow
Deny from all
</Directory>
<Directory /opt/apache/htdocs>
Order deny, allow
Allow from all
</Directory>
<Directory /some/directory>
order deny, allow
deny from all
allow from 192.168.100.0/255.255.252.0
</Directory>
Nginx Отказ в подступе при попытке загрузки файлов
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
--------------------------------------------------------------------
Apache Задание бэйсик авторизации
<Directory /some/directory>
AuthName "Example of Access Control"
AuthType Basic
AuthUserFile /etc/security/.htpasswd
Require valid-user
</Directory>
Nginx Задание бэйсик авторизации
location /admin/ {
allow 192.168.1.0/24;
deny all;
auth_basic "Authentication required";
auth_basic_user_file conf/htpasswd;
}
--------------------------------------------------------------------
Apache Включение SSL-шифрования
NameVirtualHost 64.22.73.226
<VirtualHost 64.82.73.226>
ServerName www.securesite.com
DocumentRoot /home/site3
SSLEngine on
SSLCertificate /var/ssl/server.crt
SSLCACertificateFile /path/to/certificate
SSLLog /var/log/ssllog
SSLLogLevel warn
</VirtualHost>
Можно еще добавить
SSLCertificetKeyFile /var/ssl/server.key
SSLCACertificatePath /some/secure/directory
SSLVerifyClient 1
SSLVerifyDepth 3
Nginx Включение SSL-шифрования
server {
listen 443;
server_name secure.website.com;
ssl on;
ssl_certificate /path/to/combined.crt;
ssl_certificate_key /path/to/secure.website.com.key;
...
}
Пример
http {
...
ssl_certificate common.crt;
ssl_certificate_key common.key;
server {
listen 80;
server_name www.example1.com;
location / {
...
}
}
server {
listen 443 default ssl;
server_name payment.example1.com;
location / {
...
}
}
server {
listen 80;
listen 443;
server_name static.example1.com;
location / {
root /var/www/www.example1.com/static;
}
}
--------------------------------------------------------------------
Apache Включение инклюдов Server Side Includes в HTML на стороне сервера
<Location /ssdir>
Options +Include
</Location>
Nginx Включение инклюдов Server Side Includes в HTML на стороне сервера
server {
server_name website.com;
location ~* \.shtml$ {
ssi on; (разрешить инклюды для этого адреса)
}
}
<html>
<head>
<!--# include file="header.html" -->
</head>
<body>
<!--# include file="body.html" -->
<!--# include virtual="/footer.php?id=123" -->
</body>
</html>
Команды SSI
<!--# include file="header.html" -->
<!--# include virtual="/sources/header.php?id=123" -->
<!--# include virtual="header.php" wait="yes" -->
<!--# set var="MY_VARIABLE" value="hello" -->
<!--# echo var="MY_VARIABLE" -->
<!--# set var="MY_VARIABLE" value="$MY_VARIABLE there" -->
<!--# echo var="MY_VARIABLE" -->
<!--# if expr="expression1" -->
...
<!--# elif expr="expression2" -->
...
<!--# else -->
...
<!--# endif -->
<!--# config errmsg="Something terrible happened" -->
<!--# config timefmt="%A, %d-%b-%Y %H:%M:%S %Z" -->
--------------------------------------------------------------------
Apache Переадресация через mod_rewrite
Rewriteengine On - включение режима перезаписи URL
RewriteRule ^/$ /apache backup [R] - задание переадресации
RewriteCond
Nginx Переадресация через mod_rewrite
rewrite ^/(.*)\.(png|jpg|gif)$ /image.php? file=$1&format=$2 last;
rewrite "hel{2,}o" /hello.php;
rewrite 'hel{2,}o' /hello.php;
server {
server_name website.com;
root /var/www/vhosts/website.com/httpdocs/;
location /documents/ { (
rewrite ^/documents/(.*)$ /storage/$1;
}
}
Частые правила переписывания URL страниц
Поиск для сайта
Input URI http://website.com/search/some-search-keywords
Rewritten URI http://website.com/search.php?q=some-search-keywords
Rewrite rule rewrite ^/search/(.*)$ /search.php?q=$1?;
Просмотр профиля пользователя
Input URI http://website.com/user/31/James
Rewritten URI http://website.com/user.php?id=31&name=James
Rewrite rule rewrite ^/user/([0-9]+)/(.+)$ /user.php?id=$1&name=$2?;
Передача нескольких параметров в URL
Input URI http://website.com/index.php/param1/param2/param3
Rewritten URI http://website.com/index.php?p1=param1&p2=param2&p3=param3
Rewrite rule rewrite ^/index.php/(.*)/(.*)/(.*)$ /index.php?p1=$1&p2=$2&p3=$3?;
Как на Wikipedia
Input URI http://website.com/wiki/Some_keyword
Rewritten URI http://website.com/wiki/index.php?title=Some_keyword
Rewrite rule rewrite ^/wiki/(.*)$ /wiki/index.php?title=$1?;
Показать статью на новостном сайте
Input URI http://website.com/33526/us-economy-strengthens
Rewritten URI http://website.com/article.php?id=33526
Rewrite rule rewrite ^/([0-9]+)/.*$ /article.php?id=$1?;
Форум
Input URI http://website.com/topic-1234-50-some-keywords.html
Rewritten URI http://website.com/viewtopic.php?topic=1234&start=50
Rewrite rule rewrite ^/topic-([0-9]+)-([0-9]+)-(.*)\.html$ /viewtopic.php?topic=$1&start=$2?;
--------------------------------------------------------------------
Apache задание имени сервера
NameVirtualHost 192.168.1.1:80
ServerName www.example.com
Nginx задание имени сервера
http {
server {
listen 80; (порт 80)
server_name example.com; (доменное имя)
}
}
--------------------------------------------------------------------
Комментариев нет:
Отправить комментарий