GitLab Nginx設定檔範例

# GITLAB
# Maintainer: @randx
# App Version: 5.0

upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}

server {
listen *:8000 default_server; # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
server_name localhost; # e.g., server_name source.example.com;
server_tokens off; # don’t show the version number, a security best practice
root /home/git/gitlab/public;

# Set value of client_max_body_size to at least the value of git.max_size in gitlab.yml
client_max_body_size 5m;

# individual nginx logs for this gitlab vhost
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;

location / {
# serve static files from defined root folder;.
# @gitlab is a named location for the upstream fallback, see below
try_files $uri $uri/index.html $uri.html @gitlab;
}

# if a file, which is not found in the root folder is requested,
# then the proxy pass the request to the upsteam (gitlab unicorn)
location @gitlab {
proxy_read_timeout 300; # Some requests take more than 30 seconds.
proxy_connect_timeout 300; # Some requests take more than 30 seconds.
proxy_redirect off;

proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://gitlab;
}
}

========

GitLab相關設定檔:
/home/git/gitlab/config/gitlab.yml #gitlab web的initialier會載入(*註1)
/home/git/gitlab-shell/config.yml #gitlab unicorn會載入(*註2)
/etc/nginx/sites-available/gitlab #設定nginx for gitlab

*註1: 重啟方法 service nginx restart
*註2: 重新載入 sudo /etc/init.d/gitlab reload/stop (or sudo service gitlab stop)

廣告

Nginx反向代理

apache的默認目錄是:var/www/
apache的安裝目錄是:/etc/apache2/
nginx的默認目錄是:/usr/share/nginx/www
nginx的安裝目錄是: /etc/nginx/

apache2ctl stop | start | restart 命令錯誤可能要在httpd.conf中加入ServerName 192.168.1.2
如果開啟nginx apache2就無法綁定80端口

nginx的結束方法service nginx stop
nginx的啟動方法service nginx start

nginx的主配置文件:/etc/nginx/nginx.conf
nginx的服務器配置文件:/etc/nginx/sites-enabled/default

apache的主配置文件:/etc/apache2/apache2.conf
apache的服務器配置文件:/etc/apache2/sites-enabled/000-default
或全局的 /etc/apache2/httpd.conf

========================================

[轉] ubuntu 用nginx反向代理apache,實現靜態文件用nginx,php文件用apache
最近有個想法,就是想實現nginx和apache並存,*.html或靜態文件用nginx運行.php文件用apache運行
怎麼實現配置呢?

首先nginx的配置修改/etc/nginx/sites-available/default文件,使用以下的方式來代理php運行,注意不要啟用nginx的php運行方式

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location ~ \.php$ {
proxy_pass http://localhost:8080;(這裡改為apache的監聽的IP和端口,老李是本地測試,所以這樣)
}

然後是apache的配置修改httpd.conf文件或apache2.conf文件
Listen 80 改成 Listen 8080

虛擬主機這塊要改端口
<VirtualHost *:8080>

這樣所有的80端口的web請求會有nginx處理,nginx又將請求交給apache
如果你想將靜態請求文件有nginx自己處理,圖片,css,js等
可在server添加如下配置,假如入你的靜態文件請求路徑為/media/xxx/xxx等

1 location ~ ^/media/ {
2 root /var/www/html/
3 }
nginx會在/var/www/html/media/xxx/xxx 尋找靜態文件,
這地方root也可以像apache裡面alias一樣聲明一個路徑,不過兩者是有區別的,具體可參考官網http://wiki.nginx.org/HttpCoreModule
啟動nginx /usr/local/nginx/sbin/nginx ,測試
以上即是超簡單的nginx proxy與apache的配置

只要保證nginx和apache兩端口不衝突兩服務器就可以並存

【對以上不足的補充】

一個典型的Nginx + Apache 應用方案可以是Nginx 佔用80 端口,過濾靜態請求,然後動態請求即Proxy 到Apache 的8080 端口。 Proxy 反向代理的好處是訪問的時候,始終就是80端口,來訪者不會覺察到有任何的區別。

但有的應用確非常“聰明”,識別到Apache 所位於的端口是8080 ,就會把相關的超鏈接都一併加上:8080 的後續。這麼就死定了,還能有正常訪問? !有個方法可以解決這事,就是把apache 也運行在80端口上。
同一台服務器,有Nginx 也有Apache,2個httpd服務,都是80,不會衝突?

下邊就是舉例方法。
Nginx.conf 的配置中
server {
listen 80;
server_name http://www.ABC.com;

root /var/www

}
修改一下。
server {
listen 公網IP123.123.123.123:80; #指定Nginx只佔用某個IP的80端口。 #如果你服務器中有多個IP,還可以指定多個。
server_name http://www.ABC.com;
}
如果你在Nginx有多個虛擬主機,每一個都需要這麼修改。

————————————————– ————————————————– ————-
然後輪到 apache 的 httpd.conf
把原來的
Listen 80
改為
Listen 127.0.0.1:80
跟Nginx一樣,指定apache所佔用的IP及端口。
保存退出,重啟apache即可生效。
如果你 apache 上也有多個虛擬主機。無需好像Nginx那樣逐一修改,只要都是80 端口即可。
如:
NameVirtualHost *:80
ServerAdmin hello@abc.com
DocumentRoot /var/www/admin
ServerName admin.ABC.com
(老李批註:這裡用管理後台域名綁定後台目錄,類似manager.***.com)

(這樣,恐怕apache只能通過http://127.0.0.1:80才能訪問,那麼他還佔用80端口就沒有意義了。還不如apache用8080,nginx用80算了。沒有認真看,有“聰明” 的應用檢測到apache使用的是8080端口,會把應用裡頭所有的超鏈接都加上:8080結尾,為了解決該問題,所以才有這一文。而且多數服務器都具備2張網卡,除了把apache綁定在127.0.0.1 還能綁定另外一張網卡的IP,這麼問題就解決。)

這樣,Nginx 跟Apache 就僅會佔用指定IP的80端口,不會衝突。
只要調整一下 Nginx proxy 的參數。
“聰明”應用問題就能解決了。

資料來源: http://www.cnblogs.com/php5/archive/2011/08/19/2146033.html