Apache 及 Nginx 配置

Apache配置

全局配置httpd.conf

# 服务运行帐户设定
User daemon
Group daemo

# 启用经常使用模块
LoadModule php5_module    modules/libphp5.so  #php支持模块
LoadModule rewrite_module modules/mod_rewrite.so  #URL重写模块

Addtype application/x-httpd-php .php  # 添加PHP的MIMETYPE

DirectoryIndex index.php index.html index.htm  # 默认页配置

PidFile /var/run/httpd.pid  # 进程文件设定

虚拟主机配置httpd-vhosts.conf

# Apache 2.2系列版本
<VirtualHost *:80>
   DocumentRoot /srv/www/site1
   ServerName sitename.com
   ServerAlias aliasname1.com aliasname2.com  #可选(common日志格式)
   ErrorLog  /var/log/httpd/sitename_error.log  #如未指定,则使用全局配置ErrorLog 
   CustomLog /var/log/httpd/sitename_access.log common  #可选
   
   <Directory /srv/www/site1>
    Options MultiViews FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow From All
   </Directory>
</VirtualHost>

# Apache 2.4系列版本
<VirtualHost *:80>
   DocumentRoot /srv/www/site1
   ServerName sitename.com
   ServerAlias aliasname1.com aliasname2.com  #可选(common日志格式)
   ErrorLog  /var/log/httpd/sitename_error.log  #如未指定,则使用全局配置ErrorLog 
   CustomLog /var/log/httpd/sitename_access.log common  #可选
   <Directory /srv/www/site1>
     Options FollowSymLinks
     AllowOverride all 
     Require all granted
   </Directory>
</VirtualHost>

4种系统内置的服务日志格式:
|格式分类|格式简写|用途说明|
|:-----|:------|:------|
|普通日志格式(common log format,CLF)|common|记录常规的请求信息|
|参考日志格式(referer log format)|referer|在常规信息基础上增长来源页信息|
|代理日志格式(agent log format)|agent|在常规信息基础上增长代理信息|
|综合日志格式(combined log format)|combined|结合以上三种日志信息|php

Apache URL重写

格式 RewriteRule Pattern Substitution [flags]html

Substitution:linux

flag:nginx

  • NC忽略大小写
  • L当即中止重写操做,并再也不应用其余重写规则
  • R若要使用300-400范围内的响应代码,只需在此指定R=便可(或使用下列符号名称之一:temp(默认), permanent, seeother)
# 301跳转, R=permanent 进行永久重定向
RewriteRule Pattern Substitution [R=permanent,L]

# 302跳转, 要求Substitution以http://开头
RewriteRule Pattern Substitution [R,L]

# 图片防盗链
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} ! http://www.你的域名.com [NC]
RewriteCond %{HTTP_REFERER} ! http://www.baidu.com [NC]
RewriteCond %{HTTP_REFERER} ! http://www.google.com [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ http://www.你的域名.com/unfind.jpg [R,NC,L]

Apache配置容许跨域

  • 一个请求的协议、域名、端口必须都相同,才是同域,不然即为跨域。
  • 面向第三方网站跨域操做时,浏览器仍然会发出请求,可是需获得第一方网站的容许,浏览器才会正常接收第三方网站的响应。
  • 具体的即第一方网站的 http response header 中,需引入 Access-Control-Allow-Origin 来受权浏览器跨域访问第三方网站。
# 启用header模块
LoadModule headers_module modules/mod_headers.so

# 虚拟主机配置
Header set Access-Control-Allow-Origin http://other_domain.com

Nginx配置nginx.conf

user nobody;  # 指定服务运行用户
worker_processes  4;  # 工做进程数设定(通常和cpu数一致)
 
# 全局错误日志
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid logs/nginx.pid;  # 进程文件指定
keepalive_timeout 60;
 
#工做模式设定
events {
    use epoll;  # linux2.6+内核可设定epoll(多路复用io)模式提升性能
    worker_connections 1024;  # 每一个工做进程的并发链接数
}
 
 
http {
    # 日志格式设定
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log  logs/access.log  main;  # 全局日志设定
    gzip  on;  # 开启gzip压缩
  
    # 虚拟主机配置
    server {
        listen    80;
        server_name  www.site.com;
        root /service/www;
        access_log  logs/nginx.access.log  main;  # 当前虚拟主机访问日志
 
        # php脚本处理
        location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        } 
    }
}

nginx并发总数 = worker_processes * worker_connections (反向代理通常会使并发性能下降4倍)apache

server_name 高级配置

  • 匹配多个主机名,空格隔开
    server_name  a.site.com b.site.com;
  • 使用通配符
    server_name  *.site.com;
  • 使用正则
    server_name  ~^(?<hostname>.+?)\.site\.com$;
    捕获的变量可经过 $hostname 形式在配置文件中使用
相关文章
相关标签/搜索