mmofacts.com

Eigener Webserver

gepostet vor 16 Jahre, 3 Monate von Kapsonfire

Ich möchte 2 webserver über einen port laufen lassen

also ich möchte meinen eigenen webserver vorschalten (c) und evtl die anfrage an apache weiterleiten

nur frage ich mich wie das umzusetzen ist

gibt es eine möglichkeit die anfrage an apache einfach weiterzuleiten und das dann apache meinem programm wieder die ausgabe gibt

gepostet vor 16 Jahre, 3 Monate von Störti

Also dass zwei verschiedene Programme auf einem Port lauschen können, wäre mir jetzt neu, aber du kannst Apache einfach einen anderen Port geben, 8080 oder so, und deinen Webserver auf Port 80 laufen lassen. Dann leitet dein Webserver die Anfrage einfach als HTTP-Request an Apache weiter, ruft also quasi eine Webseite auf und bekommt die Antwort zurück.

Ist die Frage nach dem Zweck erlaubt?

gepostet vor 16 Jahre, 3 Monate von Amun Ra

Original von Störti

Ist die Frage nach dem Zweck erlaubt?

Das würde mich auch mal interessieren...

gepostet vor 16 Jahre, 3 Monate von exe

Im einfachsten Fall kannst du einfach den kompletten HTTP-Request zu dem Apache durchleiten und die Antwort vom Apache wieder zum User zurückschicken. Wie du das genau löst hängt davon ab, wie dein eigener Server aufgebaut ist. Das ganze ist nichts Ungewöhnliches und nennt sich reverse Proxy - einfach mal danach googlen, vielleicht findest du ja Implementierungstipps.

gepostet vor 16 Jahre, 3 Monate von Dunedan

Entweder via Proxy oder (um mal Undead vorweg zunehmen) man nimmt Windows. Dort gehen mit dem IIS wohl zwei Anwendungen auf einem Port. Weitere technische Fragen dann bitte an Undead.

gepostet vor 16 Jahre, 3 Monate von Kapsonfire

ich will meine sachen in c coden

dafür muss ich den port 80 lauschen da da je die http anfragen standartmäßg hinlauffen

dann überprüft mein webserver ob er für die abfrage verantwortlich ist oder nicht und wenn nicht soll apache die abfrage bearbeiten und antworten..

gepostet vor 16 Jahre, 3 Monate von Störti

Wäre es da nicht schon fast wieder einfacher, nen Modul für Apache zu bauen und einzubinden?

gepostet vor 16 Jahre, 3 Monate von n26

Original von Dunedan

Entweder via Proxy oder (um mal Undead vorweg zunehmen) man nimmt Windows. Dort gehen mit dem IIS wohl zwei Anwendungen auf einem Port. Weitere technische Fragen dann bitte an Undead.

Habe ich bei mir lokal schon probiert. Beide Webserver auf einen Port hat nicht funktioniert.

gepostet vor 16 Jahre, 3 Monate von Kapsonfire

im prinzip kommt doch selbe bei raus oder?

an sich isses ja einfach

if(arbeit) { .....} else { apache }

kann ich da nicht direkt an den php interp weiterleiten?

gepostet vor 16 Jahre, 3 Monate von Dunedan

Original von n26

Habe ich bei mir lokal schon probiert. Beide Webserver auf einen Port hat nicht funktioniert.

Es läuft nur ein Webserver. Und zwar der IIS. Der kann aber mehrere unterschiedliche Anwendungen auf einen Port mappen. Aber wie schon gesagt: Weitere Fragen an Undead.

gepostet vor 16 Jahre, 3 Monate von Kapsonfire

os linux ;)

gepostet vor 16 Jahre, 3 Monate von Störti

Original von Browser-Games World

im prinzip kommt doch selbe bei raus oder?

an sich isses ja einfach

if(arbeit) { .....} else { apache }

kann ich da nicht direkt an den php interp weiterleiten?

Das intern im Webserver zu klären sollte nur etwas Overhead sparen..

gepostet vor 16 Jahre, 3 Monate von TheUndeadable

> Also dass zwei verschiedene Programme auf einem Port lauschen können, wäre mir jetzt neu,

Geht unter Windows, wie Dunedan schon angekündigt hat, problemlos.

Stichwort: HttpListener unter .Net oder http.sys unter anderen Frameworks. Der Windows-Kernel nimmt die HTTP-Anfrage an und leitet diese per Host-Header oder Verzeichnis an die registrierte Anwendung weiter.

Ansonsten würde ich mal unter Reverse oder Forward-Proxy suchen (weiß jetzt nicht was das Korrekte ist).

> ich will meine sachen in c coden

Ich hoffe du hast dich vorher tiefgehend mit dem Thema Sicherheit und C informiert und kannst auswendig sagen was ein Buffer Overflow ist oder uninitialisierte Variablen für Konsequenzen haben.

> Beide Webserver auf einen Port hat nicht funktioniert.

Du kannst nicht per listen auf den Port 80 gehen, sondern sollst für dieses Multiplexing die http.sys bemühen. Dieses ist wie oben schon geschrieben in .Net wunderbar abgekapselt.

gepostet vor 16 Jahre, 3 Monate von exe

Original von Browser-Games World

im prinzip kommt doch selbe bei raus oder?

an sich isses ja einfach

if(arbeit) { .....} else { apache }

kann ich da nicht direkt an den php interp weiterleiten?

Du könntest via (F)CGI einen PHP-Interpreter an deinen Webserver anbinden. Das wäre sowies sinnvoller als dafür extra einen Apache zu bemühen.

gepostet vor 16 Jahre, 3 Monate von Klaus

Oder umgekehrt hängst du dich via FastCGI an Lighttpd. Der Server entscheidet dann ob er den Aufruf an dich oder PHP leitet oder die Datei einfach nur durchleitet. So musst du dich nicht um die Implementierung von HTTP kümmern.

Allerdings muss ich Undead recht geben: Du und gleich C (reines C?). Das kann ja was werden wenns öffentlich geht.

gepostet vor 16 Jahre, 3 Monate von duschendestroyer

was spricht gegen mod_proxy?

gepostet vor 16 Jahre, 2 Monate von Kapsonfire

Original von Klaus

Oder umgekehrt hängst du dich via FastCGI an Lighttpd. Der Server entscheidet dann ob er den Aufruf an dich oder PHP leitet oder die Datei einfach nur durchleitet. So musst du dich nicht um die Implementierung von HTTP kümmern.

Allerdings muss ich Undead recht geben: Du und gleich C (reines C?). Das kann ja was werden wenns öffentlich geht.

Original von Klaus

Oder umgekehrt hängst du dich via FastCGI an Lighttpd. Der Server entscheidet dann ob er den Aufruf an dich oder PHP leitet oder die Datei einfach nur durchleitet. So musst du dich nicht um die Implementierung von HTTP kümmern.

Allerdings muss ich Undead recht geben: Du und gleich C (reines C?). Das kann ja was werden wenns öffentlich geht.


hmm ja und ich kann c ;)
und ja ich kann auswendig aufsagen was buffer overflow ist
vereinfacht ist das wenn einer variable ein wert zugewiesen wird welcher mehr speicher benötigt , als der variable zugewiesen wurde.... dabeo wird wieder von unten nach oben überschrieben.
(passiert z.B. durch falsche deklarierung des types oder fehlender längenüberprüfung)
dadurch können hacker probieren in  ihren code etc einzuschleusen
gepostet vor 16 Jahre, 2 Monate von Klaus

Du könntest trotzdem den PHP-Werbserver benutzen: http://nanoweb.si.kz/
Der ist leicht, schnell und robust!

gepostet vor 16 Jahre, 2 Monate von abuzeus

Original von Browser-Games World


hmm ja und ich kann c ;)
und ja ich kann auswendig aufsagen was buffer overflow ist
vereinfacht ist das wenn einer variable ein wert zugewiesen wird welcher mehr speicher benötigt , als der variable zugewiesen wurde.... dabeo wird wieder von unten nach oben überschrieben.
(passiert z.B. durch falsche deklarierung des types oder fehlender längenüberprüfung)
dadurch können hacker probieren in  ihren code etc einzuschleusen

Nur weil du die Syntax von C kannst (bei uns an der Uni wird vorausgesetzt, dass man die sich innerhalb einiger Tage selbst beibringt,so schwer ist das nicht) heißt das noch lange nicht, dass du C kannst. Ich traue dir auch die Sorgfalt und Methodik, die für so etwas in C nötig ist, beim besten Willen nicht zu. Bin auf jeden Fall auf das Ergebnis gespannt...

gepostet vor 16 Jahre, 2 Monate von Kapsonfire

besonders wenn man php,java etc kann ist es nicht schwer sich das selbst beizubringen.....

bin grad am überlegen ob ich den php interpreter direkt anspreche oder apache ......

gepostet vor 16 Jahre, 2 Monate von Dunedan

Original von Browser-Games World

besonders wenn man php,java etc kann ist es nicht schwer sich das selbst beizubringen.....

Interessant wie du es schaffst mit einem einzigen Satz abuzeus' Aussagen zu bestätigen.

gepostet vor 16 Jahre, 2 Monate von xou

Ich würde Klaus ersten Vorschlag unterstützen und einen Lighttpd oder einen Apache mit mod_fastcgi als Primärserver einsetzen und die C-Programme über FastCGI anzusprechen. Die laufen dann auch als Server und der Apache/Lighttpd leitet die Anfrage an das Programm weiter.

Beispiel eines FastCGI-Programms:

http://www.fastcgi.com/devkit/doc/fastcgi-prog-guide/ch2c.htm#4263

Komfortabler gehts echt kaum.

gruß,

niko

Auf diese Diskussion antworten